【发布时间】:2018-10-19 15:10:48
【问题描述】:
我有一个测试用例,我必须在 iPhone 中 1. 在应用 A 中执行任务。 2.切换到Safari浏览器并执行任务 3.再次切换回App A,继续其他任务
目前我可以执行 1 和 2,然后切换回 App A,但从 safari 浏览器切换后我无法在 App A 中执行任何任务。我所做的如下。
首先启动应用程序 A 我使用了以下代码
public void createAppiumDriver() throws MalformedURLException, InterruptedException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "iPhone 7 Plus");
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("platformVersion", "11.2");
capabilities.setCapability("autoWebView", true);
capabilities.setCapability("app", getProperties().getProperty("appURL"));
capabilities.setCapability("autoAcceptAlerts", true);
capabilities.setCapability("useNewWDA", true);
capabilities.setCapability("startIWDP",true);
iosDriver = new IOSDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);}
为了从我的应用切换到 Safari,我使用以下代码开始了一个新会话以切换到 safari
public void openSafari() throws MalformedURLException {
DesiredCapabilities capabilities2 = new DesiredCapabilities();
capabilities2.setCapability("deviceName", "iPhone 7 Plus");
capabilities2.setCapability("platformName", "iOS");
capabilities2.setCapability("platformVersion", "11.2");
capabilities2.setCapability("browserName", "Safari");
capabilities2.setCapability("autoAcceptAlerts", true);
capabilities2.setCapability("useNewWDA", true);
iosDriver2 = new IOSDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities2);
iosDriver2.get("https://www.gmail.com");}
现在我遇到的问题是再次从 safari 浏览器切换回 App A 以执行一些任务,此时我再次创建了一个新会话,如下所示
public void switchToNutrifix() throws MalformedURLException, InterruptedException {
DesiredCapabilities capabilities3 = new DesiredCapabilities();
capabilities3.setCapability("deviceName", "iPhone 7 Plus");
capabilities3.setCapability("platformName", "iOS");
capabilities3.setCapability("platformVersion", "11.2"); //Replace this with your iOS version
capabilities3.setCapability("autoWebView", true);
capabilities3.setCapability("app", getProperties().getProperty("appURL"));
capabilities3.setCapability("autoAcceptAlerts", true);
capabilities3.setCapability("useNewWDA", true);
capabilities3.setCapability("startIWDP",true);
iosDriver3 = new IOSDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities3);}
现在的问题是应用程序 A 再次从 Safari 中打开,但它无法识别应用程序中的元素。我什至将上下文正确更改为 webview,但在从 Safari 浏览器切换后,它仍然无法在 App A 中执行任何任务。有人可以告诉我我在这里做错了什么或另一种方法来进行此切换。
我通常得到的错误是
May 09, 2018 6:43:42 PM org.openqa.selenium.support.ui.ExpectedConditions findElement
WARNING: WebDriverException thrown by findElement(By.xpath: //div[@class='login-content purpose']/h2)
org.openqa.selenium.remote.SessionNotFoundException: A session is either terminated or not started (WARNING: The server did not provide any stacktrace information)
appium 日志显示
debug] [iOS] No key id found. Choosing first id from page array
[debug] [iOS] Page change not referring to currently selected app, ignoring.
【问题讨论】:
标签: automation automated-tests appium ios-ui-automation appium-ios