Appium Hybrid混合应用测试——Native切换WebView

一、Appium Hybrid混合应用中Native和WebView之间进行切换

           1、由原生切换至WEBVIEW操作

Set contextNames = driver.getContextHandles();

for (String contextName : contextNames) {

// 用于返回被测app是NATIVE_APP还是WEBVIEW,如果两者都有就是混合型App

  System.out.println(contextName);

if (contextName.contains("WEBVIEW")) {

driver.context("WEBVIEW");

}

}


           2、切换至NATIVE_APP操作

driver.context("NATIVE_APP");


二、问题记录:无法切换Webview的原因及处理方法

 问题1、 contexts只能获取NATIVE_APP,无法获取WEBVIEW

          【解决方案】

           需要开启webview远程调试功能, Android 4.4以上,需要在应用代码中增加一下代码段开启该功能 (可由开发人员增加后重新打包给测试):

           修改Activity extends CordovaActivity,设置setWebContentsDebuggingEnabled(true);

  问题2、已经能够获取到WEBVIEW,但是无法切换到WEBVIEW

           用appium切换webview的时候报chrome和chromedriver版本的问题:session not created exception: Chrome version must be >= 58.0.3029.0

(Driver info: chromedriver=2.30.477700 ) 


          【解决方案】

           1.找到webview的chrome版本号了,接下来下载对应的chromedriver驱动包就可以了,57的webview对应2.28驱动

           下载地址:chromedriver版本下载


           2.chromedriver下载后应该放哪呢?首先找到报错里面的chromedriver=2.30.477700 版本是从哪里来的,替换掉就可以了。查找路径:\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win

           找到后双击就能显示版本号,chromedriver=2.30.477700也就是报错里面看到的


           备注:版本不一样,路径可能不太一样,自己搜索:appium-chromedriver

           3.把刚才下载2.28版本的chromedriver.exe替换掉这个2.30版本就可以了

 问题3、假如我们在webview1中通过“openLinkNewWindow”在新的activity中打开了webview2,然后通过driver处理webview2的元素时,始终只有原来的webview1做出了响应,那么有可能是driver指向的窗口还是原来的webview1所属的activity,所以我们可能需要重新定位driver指向到新的webview2窗口中


//将driver指向切换到最新的window窗口

String windowName = (String) driver.getWindowHandles().toArray()[driver.getWindowHandles().size() - 1];

driver.switchTo().window(windowName);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容