UITesting的iOS仿真器位置

问题描述:

我试图在持续集成服务器上运行我的UITest(我正在使用Bitrise)。因此,在我U​​ITests之一,我有以下几点:UITesting的iOS仿真器位置

let myLocationPin = app.otherElements["My Location"] 
     self.expectation(for: exists, evaluatedWith: myLocationPin, handler: nil) 

     self.waitForExpectations(timeout: 20, handler: nil) 

     expect(myLocationPin.exists).to(beTrue()) 
     expect(myLocationPin.isHittable).to(beTrue()) 
     myLocationPin.tap() 

它运作良好,我的本地计算机上,但只要试验正在运行失败的CI服务器上。我发现失败的原因是运行测试的模拟器没有任何选定的位置。我试图添加一个GPX文件,但这也不起作用。有什么建议么 ?

您是否在运行之前从下拉列表中选择本地计算机上的位置?

如果是这种情况,那么您将无法使用图形用户界面在bitrise上执行此操作,但是可以根据方案选择位置。

您可以按照这篇文章对您的方案设置的位置: Automating Xcode' Debug > Simulate Location command

更新:

如果上面的方法没有解决问题,另一个解决办法是:

要更改模拟器本身的位置,您需要在包含以下脚本的UITest之前添加script步骤:

# download set-simulator-location 
brew install lyft/formulae/set-simulator-location 

# run simulator 
export IOS_SIMULATOR_UDID=`instruments -s devices | grep "iPhone 6 (10.3) \[" | awk -F '[ ]' '{print $4}' | awk -F '[\[]' '{print $2}' | sed 's/.$//'` 
echo $IOS_SIMULATOR_UDID 
open -a "simulator" --args -CurrentDeviceUDID $IOS_SIMULATOR_UDID 

# wait simulator to start fully 
sleep 15 

# set location 
set-simulator-location -q London 

不要忘了将iPhone 6 (10.3)更改为您需要的模拟器和London到您自己的位置,-c标志也可以设置坐标。

欲了解更多信息有关set-simulator-location请访问:set-simulator-location

+0

感谢您的回答。我试过了所提出的解决方案,但似乎仿真器不尊重选定的测试位置。 – radioaktiv

如果你想在你的模拟器的自定义位置,然后选择模拟器和follor这两个步骤。 enter image description here

enter image description here

和改变位置