Appium python_appium 混合应用中切换 webview 不成功

xi · 2017年01月09日 · 最后由 William 回复于 2017年01月12日 · 1356 次阅读

混合应用第一次进入 webview 寻找元素成功,第二次不成功,第二次跳转是跳到本身 activirty,里面 webview 控件是没变的,内容重新请求了,两次打印 context 也都是同一个名字;
跳转后以下三种操作都失败了:
1 1)driver.switch_to.context(self.driver.context[0])
2) driver.switch_to.context(self.driver.context[1])
2 driver.switch_to.context(self.driver.context[1])
3 什么都不切换,直接寻找
但这次切换就找不到元素了,什么原因,是因为 webview 没换吗?
还有就是第一次进去不切换,跳转后切换也是找不到元素的,contest 是打印的出来的

共收到 10 条回复 时间 点赞

直接切换就可以了,你描述的不太清楚。

我也是第一次切换成功,然后第二次再切换就出错啦。

—— 来自 TesterHome 官方 安卓客户端

重复切换 webview ,第二次获取不到 webview 元素

xi #2 · 2017年01月10日 Author

#1 楼 @Edu_taluo 第一次切换时成功的,第二次什么都不做或者重新切换都失败,两个界面属于 webview 的 contest 名都是一样的

#4 楼 @yangha 一般是这么切换的

public static void switchtoWeb(){
try {
     Set<String> contextNames = driver.getContextHandles();
     for (String contextName : contextNames) {
       // 用于返回被测app是NATIVE_APP还是WEBVIEW,如果两者都有就是混合型App
       if(contextName.contains("WEBVIEW")||contextName.contains("webview")){
       driver.context(contextName);
       System.out.println("跳转到web页 开始操作web页面"); 
       }
     }
}catch (Exception e) {
     e.printStackTrace();
}
}

webview 测试完成再切换回 native_APP 即可

xi #5 · 2017年01月12日 Author

#5 楼 @Edu_taluo 这个是 java 吧,python 切换原理都一样,切换步骤是一样的

#6 楼 @yangha 不要用 context[0] 这样的下标去切换啊,用内容。感觉你是因为用下标的原因。

xi #7 · 2017年01月12日 Author

#7 楼 @Edu_taluo 这个我打印出来没问题啊,

xi #9 · 2017年01月12日 Author

#7 楼 @Edu_taluo 我不切换用的这种可以找到 xpath //android.webkit.WebView[1]/android.webkit.WebView[1]/android.widget.EditText[2]

#9 楼 @yangha 用 webkit 加载的内容的话,不用切换 webview 吧,直接用 xpath 就可以了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册