Appium 为什么只有一个 webview,并且只能获取一个的 url?

醋精测试媛 · 2021年03月12日 · 最后由 醋精测试媛 回复于 2021年03月12日 · 2213 次阅读

app 有一个底部菜单,参考微博。

这几个菜单可以自定义其链接,即变成 h5 界面,但是我依次点击菜单,并切换到 webview 的 context,然后获取其 url

# 步骤:查看菜单二
Menu(self.driver).to_page2()
# 断言:【菜单二】【链接】正确
self.set_h5_context()
url1 = self.driver.current_url
print(url1)
print(self.driver.contexts)
self.set_default_context()
# 步骤:查看菜单三
Menu(self.driver).to_page3()
# 断言:【菜单三】【链接】正确
logger.info(f"5.断言:【菜单三】【链接】正确")
self.set_h5_context()
url2 = self.driver.current_url
print(url2)
print(self.driver.contexts)

结果就是两个 url 是一样的。但是实际上是不同的两个 url。我觉得可能是有多个 webview,也像代码中那样打印了,但是只有两个:

请教大家,这是怎么回事呢?

共收到 3 条回复 时间 点赞

百度后尝试过方法 1:appium 配置中添加 recreateChromeDriverSessions 为 True
2.切换回 native 的 context,都杀掉 chromedriver 进程。os.system('pkill -9 chromedriver')

比如我帮第二个网页设置为 baidu.com,第三个网页为 music.163.com
正常可以打开:

但是我切换到第二个网页之后之后获取 url,却是 “music.163.com”,而且去获取百度页面的 “百度一下” 按钮,提示获取不到元素:

但是在第二个网页获取第三个网页的元素却可以获取到。
是因为我切换到第三个网页的 webview 了嘛,但是为啥我打印 contexts 只有 native 和一个 webview 呢????

https://testerhome.com/topics/18197启发,我输出了句柄,发现确实有两个句柄!
切换到另一个句柄就可以了!

醋精测试媛 关闭了讨论 03月12日 14:46
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册