Karate Framework移动端自动化:修改默认Host解决BrowserStack运行报错
Karate Framework移动端自动化:解决BrowserStack Hub地址拼接错误问题
问题根源
你错误使用了webDriverPath属性配置BrowserStack的远程Hub地址。Karate中webDriverPath的作用是在默认webDriverUrl(http://localhost:4723)后追加路径,导致系统自动拼接出无效URI:http://localhost:4723http:/<username>:<passkey>@hub-cloud.browserstack.com/wd/hub/session,进而触发ClientProtocolException。
正确配置方法
直接通过webDriverUrl指定完整的BrowserStack远程Hub地址,替换默认的本地地址,避免拼接错误。
方式1:在Feature文件中直接配置
Feature: 移动端自动化测试场景 Background: * configure driver = { type: 'android', // 根据测试平台选择android/ios webDriverUrl: 'http://<你的BrowserStack用户名>:<你的BrowserStack密钥>@hub-cloud.browserstack.com/wd/hub', desiredCapabilities: { 'browserstack.user': '<你的BrowserStack用户名>', 'browserstack.key': '<你的BrowserStack密钥>', 'device': 'Google Pixel 7', // 目标测试设备 'os_version': '13.0', // 设备系统版本 'app': 'bs://<你的BrowserStack应用ID>' // 测试应用的BrowserStack存储ID } }
方式2:在karate-config.js中全局配置
function fn() { const browserStackUser = '<你的BrowserStack用户名>'; const browserStackKey = '<你的BrowserStack密钥>'; const driverConfig = { type: 'ios', // 根据测试平台切换 webDriverUrl: `http://${browserStackUser}:${browserStackKey}@hub-cloud.browserstack.com/wd/hub`, desiredCapabilities: { 'browserstack.user': browserStackUser, 'browserstack.key': browserStackKey, 'device': 'iPhone 14', 'os_version': '16', 'app': 'bs://<你的BrowserStack应用ID>' } }; karate.configure('driver', driverConfig); return { driverConfig: driverConfig }; }
关键说明
webDriverUrl:用于指定完整的远程WebDriver服务器地址,会完全覆盖Karate默认的http://localhost:4723,适用于BrowserStack、Sauce Labs这类远程测试平台。webDriverPath:仅当需要在默认主机地址后追加路径时使用(例如本地WebDriver服务器的路径后缀),不要用于完整的远程Hub地址配置。
内容的提问来源于stack exchange,提问作者Michael Corleone
相关产品推荐
相关产品推荐

