UITesting的iOS仿真器位置
问题描述:
我试图在持续集成服务器上运行我的UITest(我正在使用Bitrise)。因此,在我UITests之一,我有以下几点: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
感谢您的回答。我试过了所提出的解决方案,但似乎仿真器不尊重选定的测试位置。 – radioaktiv