如何使用uiautomator与android.webkit.WebView中嵌入的元素进行交互

时间:2019-02-24 17:19:03

标签: appium appium-android

am使用appium和机器人框架从事android自动化。为此,我正在使用机器人的辅助库。所以我想在我的应用程序中自动执行Facebook登录secenario,但是问题是应用程序上的fb登录页面已嵌入到Webview中。但是,在uiautomatorviewer中可以聚焦和查找元素,但是在运行脚本时会抛出找不到错误元素。

screenshot

在这种情况下我需要做什么。我试图获取然后切换到上下文,但是没有新的或相关的上下文可用。只有NATIVE_APP。

1 个答案:

答案 0 :(得分:0)

要使用driver.context()方法查看Webview上下文,应启用WebView调试;开发人员必须在setWebContentsDebuggingEnabled类中启用“ WebView”标志。此标志启用调试加载到应用程序的任何WebViews中的Web内容(HTML / CSS / JavaScript)的功能。完成此操作后,driver.context()方法将返回本机和webview这两个上下文。

    Set<String> availableContexts = driver.getContextHandles();
    System.out.println("Total No of Context Found = "+ availableContexts.size());
    for(String context : availableContexts) {
        if(context.contains("WEBVIEW")){
            System.out.println("Context Name is " + context);
            driver.context(context);
            break;
        }
    }

注意-您不能对第三方应用程序(例如facebook)执行此操作,因为您可能无法在启用了Webview调试器的情况下重建该应用程序。