使用Appium+RobotFramework在Android端启动Chrome浏览器失败报错
问题背景
使用Appium配合RobotFramework开展Android端自动化测试时,执行测试脚本无法正常唤起Chrome浏览器,仅完成Appium Settings应用安装流程后直接抛出服务端错误。
测试脚本内容如下:
*** Settings *** Library AppiumLibrary *** Test Cases *** Loign_To_Weekend App_Up_And_Run *** Keywords *** App_Up_And_Run Open Application http://localhost:4723/wd/hub platformName=Android deviceName=RNNNNNNNK browserName=Chrome Go To Url https://www.amazon.com/
抛出的核心报错信息:
WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: No Chromedriver found that can automate Chrome '102.0.5005'. You could also try to enable automated chromedrivers download server feature.
报错堆栈指向Appium安装目录下的W3C协议处理模块,报错提示附带的参考链接已失效,无法通过官方指引直接解决问题。
故障根因
故障核心原因为Appium内置的Chromedriver版本与测试设备上安装的Chrome 102.0.5005版本不匹配。Appium对Chrome浏览器的自动化控制完全依赖Chromedriver实现,默认自带的Chromedriver仅覆盖部分主流Chrome版本,未适配102版本时就会抛出找不到可用驱动的错误,无法完成浏览器启动流程。
解决步骤
- 校验设备Chrome版本
打开测试设备上的Chrome浏览器,进入「设置-关于Chrome」页面,确认Chrome大版本确实为102,排除ADB版本识别错误的情况。如果设备Chrome版本不是102,以实际查到的大版本为准匹配对应驱动即可。 - 手动匹配对应版本Chromedriver
下载大版本为102的Chromedriver可执行文件,Chromedriver与Chrome的兼容规则为大版本号完全一致即可,不需要小版本号完全对应。 - 启动Appium时指定驱动路径
启动Appium服务时追加--chromedriver-executable参数,指向本地存储的对应版本Chromedriver文件路径,Windows环境示例启动命令:appium --chromedriver-executable C:\test-drivers\chromedriver_v102\chromedriver.exe - 可选配置:开启自动下载驱动能力
不想手动查找对应驱动时,可以在启动Appium时追加--allow-insecure=chromedriver_autodownload参数,开启后Appium检测到驱动版本不匹配时会自动拉取对应版本的Chromedriver,使用该配置需要保证当前网络可正常访问Chromedriver存储源。 - 执行前环境校验
重新运行脚本前,确认测试设备已开启USB调试、已给当前连接的电脑授予调试权限,4723端口没有被其他Appium进程或应用占用,原有RobotFramework脚本不需要修改即可正常运行。
避坑提示
不要使用跨大版本的Chromedriver尝试兼容,只要Chromedriver和设备Chrome的大版本号不一致,必然会出现驱动匹配失败的问题。如果测试设备的Chrome版本被管控无法升级或降级,直接匹配对应大版本的Chromedriver是效率最高的解决方案。
内容的提问来源于stack exchange,提问作者Al Imran
相关产品推荐
相关产品推荐

