driver.setLocation()不适用于iOS appium模拟器
问题描述:
我在网上做了很多搜索,我不知道我在做什么错。这个想法是,我想在模拟器中启动我的iOS应用程序以下位置。这工作正常,当我手动去调试>位置>自定义位置并设置经度和纬度....但是我需要以编程方式执行它,以便我的应用程序启动/拾取此位置时,我单击启用位置。这里是我的代码driver.setLocation()不适用于iOS appium模拟器
public class SampleTest extends SampleBaseTest {
private IOSDriver driver;
private String sessionId;
static UserData sampleUser = null;
@Test(priority = 0)
public void setUp() throws MalformedURLException {
DesiredCapabilities caps = DesiredCapabilities.iphone();
caps.setCapability("appiumVersion", "1.4.16");
caps.setCapability("deviceName","iPhone 6");
caps.setCapability("deviceOrientation", "portrait");
caps.setCapability("platformVersion","9.1");
caps.setCapability("platformName", "iOS");
caps.setCapability("browserName", "");
caps.setCapability("app","sauce-storage:sampleAppe.zip");
URL sauceUrl = new URL("http://" + "sauceUserName" + ":"+ "sauceUserKey" + "@ondemand.saucelabs.com:80/wd/hub");
driver = new IOSDriver(sauceUrl, caps);
Location location = new Location(-8.78319, -114.509, 0.0);
driver.setLocation(location);
sessionId = driver.getSessionId().toString();
@Test(priority = 1)
public void navigateToPayAhead()
throws Exception {
try{
// test logic here
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
答
不幸的是,在Sauce iOS模拟器上设置一个位置存在一个当前的问题。从一个类似问题的支持票上,我被告知这是一个已知的问题,并且将会解决(在某个时候)。
我可以通过Sauce Labs验证设置位置在使用Android模拟器时是否有效。
所以,我想好消息是你没有做错什么!
答
尝试增加
caps.setCapability("locationServicesEnabled", true);
caps.setCapability("locationServicesAuthorized", true);
caps.setCapability("bundleId", "YOUR_BUNDLE_ID_HERE");
为了让您的包ID,看到How to obtain Bundle ID for an IOS App when I have a '.ipa' file for the app installed on my iPAD