【发布时间】:2017-05-09 02:22:50
【问题描述】:
我使用 ionic 框架开发了一个混合应用程序。现在是时候测试我的应用了,所以我选择了 appium 来自动化它。我已准备好 appium 设置,并且我的应用已安装在我的设备中,并通过 USB 连接。
我已经编写了一个示例测试来打开登录按钮并将密钥发送到电子邮件和密码等必填字段。我曾使用 uiautomatorviewer 来查找带有 id 的元素。
例如:driver.findElement(By.id("io.mysoft.testapp:id/login")).click();
到目前为止,一切都很清楚和完美,但我的示例测试失败,显示像
这样的错误FAILED: Loginforsample
org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 5.51 seconds
经过长时间的研究,我知道我们必须通过driver.context("WEB_VIEW");在测试逻辑中切换到WEB_VIEW。我还尝试使用以下代码获取 WEB_VIEW:
Set<String> contextNames = ((AppiumDriver) driver).getContextHandles();
for (String contextName : contextNames) {
System.out.println("FIRST" + contextNames);//output is //NATIV_APP
((AppiumDriver) driver).context(contextName);
}
我只从数组中得到 NATIV_APP,但没有打印 WEB_VIEW。我已经研究过,要启用 WEB_VIEW 调试,我们必须在 webView 类上调用静态方法setWebContentsDebuggingEnabled,以便我们将在 webView 上找到元素并清楚地测试它。
我是一名 Angular 开发人员,我选择 ionic 来开发混合应用程序。我的应用程序中没有类或任何东西,即编码时这里没有 java。困扰我的问题是如何在我的 ionic 应用程序(混合)中启用 setWebContentsDebuggingEnabled? 有没有办法从 ionic 混合应用程序中获取 web_view?我认为这是我的测试失败的主要原因。请任何人对此有解决方案。过去一周我一直在努力。
提前致谢。
【问题讨论】:
-
您的第一个测试可能只会失败,因为您的测试在 web_view 渲染之前开始。例如等待或延迟您的测试(渲染页面)。这可能是存在 org.openqa.selenium.NoSuchElementException 的唯一原因。希望对您有所帮助。
-
感谢您的回复。我试过了,但我没有从方法调用 getContentHanles(); 得到 WEB_VIEW;
-
我没有在我的应用中启用 webview,你能告诉我怎么做吗@destrif
标签: android selenium ionic-framework webview appium