问答 appium 从 native 切换 webview,日志显示"error":"session not created"

闲看亭花落花开 · 2023年07月03日 · 最后由 闲看亭花落花开 回复于 2023年07月04日 · 5688 次阅读

大佬,可以有偿解决,急!
日志如下:

代码如下

from appium import webdriver
from time import sleep
desired_caps_4 ={
    'platformName': 'Android',
    'deviceName': 'CLB7N18622009475',
    'platformVersion': '10',
    'appPackage': 'merkava.app.kilowatt',
    'appActivity': '.ui.splash.SplashActivity',
    'unicodeKeyboard': True,
    'resetKeyboard': True,
    'noReset': True,
    'newCommandTimeout': 600,
    'automationName': 'UIAutomator2',
    'showChromedriverLog': True,
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps_4)

sleep(15)
# 不做页面点击,直接手动打开页面
contexts = driver.contexts
print(contexts)
s = driver.current_activity
print(s)

# driver.switch_to.context('WEBVIEW_merkava.app.kilowatt')
driver.switch_to.context(contexts[1])
now = driver.current_context
print("切换所属:",now)

说明:代码执行另一个 APP 是切换成功的,但是针对代码里面的这个 APP 切换失败,日志里面显示创建 session 失败

共收到 2 条回复 时间 点赞

chatgpt 的回答:

这个报错通常出现在切换到 Webview 后的 Appium 测试中。它意味着 Chromedriver 无法创建会话。有几个可能的原因和解决方法:


Chromedriver 版本不兼容:确保你使用的 Chromedriver 版本与你的 Chrome 浏览器版本匹配。可以尝试升级或降级 Chromedriver 来解决版本不兼容的问题。



Chromedriver 未正确配置:在切换到 Webview 前,确认已正确设置 Chromedriver 的路径。你可以通过设置环境变量 PATH 来指向正确的 Chromedriver 所在文件夹。



Webview 未准备就绪:有时候在切换到 Webview 前,需要等待一段时间,直到 Webview 完全加载并准备好。你可以增加一个等待步骤,确保 Webview 完全加载后再切换。



设备不支持:某些设备可能不支持使用 Chromedriver 进行 Webview 测试。你可以尝试使用其他的 Driver 来处理 Webview,如 Selendroid 或 UiAutomator。



希望以上解决方法能帮助到你!如果问题仍然存在,请提供更多的细节,以便我给出更具体的建议。

基于个人经验补充 1 个检查点:

android 很多应用用的不是系统 webview ,而是自定义内核的 webview(如腾讯 x5 内核,uc 的内核等)。这些 webview 不一定有开放外部接入的 debug 入口,也不一定兼容 chromedriver。如果是自家应用,建议和开发确认下这方面信息。

陈恒捷 回复

用的是 X5 内核,debug 开启了,driver.contexts 可以正常获取到 webview。同样的环境和代码,换另一个 APP 就是正常切换的,Android 开发也是同一个人方法用的都差不多。

闲看亭花落花开 关闭了讨论 07月07日 14:59
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册