【问题标题】:Appium: How to get the WEB_VIEW from ionic based hybrid App?Appium:如何从基于离子的混合应用程序中获取 WEB_VIEW?
【发布时间】: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


【解决方案1】:

您需要在安卓应用中启用setWebContentsDebuggingEnabled。请参考此link 在安卓应用中启用。

此外,一旦获得 WEB_VIEW,您就可以直接在 Web 视图中找到元素。为此,您需要更新您的 Android SDK。最新的 UIAutomator 具有无需切换上下文即可在 Web 视图中查找元素的内置功能。

您需要操作系统版本为 6.0+ 的 Android 设备来自动化脚本,自动化脚本后,您可以将其用于操作系统版本低于 6.0 的设备。

我已经回答了类似的问题here。你可以参考这个。

我希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-20
    • 2018-05-29
    • 2016-11-16
    • 1970-01-01
    • 2023-02-14
    • 2014-09-25
    • 2018-09-20
    • 2015-05-15
    相关资源
    最近更新 更多