Protractor代码在Android设备运行正常但Jasmine报告显示失败求助
解决Protractor测试在Android设备执行正常但Jasmine报告失败的问题
从你描述的情况和提供的信息来看,核心问题出在ChromeDriver与设备Chrome版本不兼容,再加上配置里的旧ChromeDriver路径覆盖了更新后的版本,导致测试实际跑通但报告抛出错误。下面是具体的排查和修复步骤:
1. 先明确版本不匹配的核心问题
你的报错信息里明确显示:
Session info: chrome=64.0.3282.137
Driver info: chromedriver=2.33.506120
根据ChromeDriver的官方兼容规则,ChromeDriver 2.33仅支持Chrome 60-62版本,而你的设备上是Chrome 64,版本完全不匹配,这就是Cannot navigate to invalid URL报错的根源。
2. 修正Protractor配置里的ChromeDriver设置
你手动指定了chromeDriver路径,这会直接跳过webdriver-manager更新的新版本,需要做以下调整:
- 直接删除配置里的
chromeDriver:'./node_modules/chromedriver/lib/chromedriver/chromedriver.exe'这一行,让Appium自动匹配对应版本的ChromeDriver(Appium会根据设备Chrome版本自动找合适的ChromeDriver) - 或者手动下载对应Chrome 64的ChromeDriver版本(应为2.35版本,支持Chrome 62-64),然后把
chromeDriver路径更新到新版本的exe文件位置
3. 修复Capabilities里的拼写和配置问题
你的capabilities有几处小问题,可能间接影响报告准确性:
deviceName是空的,必须填写你的Android设备名称(可以通过adb devices命令获取)autowebview和autoacceptalerts拼写错误,正确的驼峰写法是autoWebview和autoAcceptAlerts- 混合应用WebView测试时,
browserName可以留空,但要确保autoWebview: true生效
修正后的capabilities示例:
capabilities: { platformName: 'Android', platformVersion: '7.1.1', deviceName: '你的设备名称', // 比如"Pixel 5"或通过adb获取的设备ID browserName: '', autoWebview: true, autoAcceptAlerts: true, autoGrantPermissions: true, clearSystemFiles: true, app: './platforms/android/build/outputs/apk/android-debug.apk', },
4. 确保webdriver-manager更新生效
执行以下命令确认更新后的ChromeDriver版本:
webdriver-manager status
如果显示的ChromeDriver不是2.35,重新执行更新命令指定版本:
webdriver-manager update --versions.chromedriver 2.35
5. 检查报告生成逻辑
因为测试实际执行正常但报告失败,还要确认onComplete里的报告生成逻辑:
- 确保
./report/mobile和./screenshots目录存在,否则生成报告时可能抛出文件路径错误 - 检查
xmlresults.xml文件是否正确生成,有没有测试用例的错误日志被遗漏
按以上步骤调整后,重新运行测试,应该就能解决报告显示失败的问题了。
内容的提问来源于stack exchange,提问作者kirankok
相关产品推荐
相关产品推荐

