Robot Framework中配置PhantomJS自定义请求头(Capability)失败求助
解决Robot Framework中PhantomJS自定义请求头的配置问题
我之前在Robot里配置PhantomJS的自定义请求头时也踩过类似的坑,你的代码里有两个关键问题导致浏览器无法启动,咱们来一步步修正:
1. 修正Create Webdriver的参数拼写错误
你代码里的desired_capabilitie少了末尾的s,正确的参数名是desired_capabilities,这个拼写错误会导致Robot无法识别你传入的配置,直接启动失败。
2. 正确设置嵌套的自定义请求头
直接用Set To Dictionary设置多层嵌套的键(比如phantomjs.page.customHeaders.Authorization)有时候会因为Robot的字典处理逻辑失效,更可靠的方式是先创建自定义头的子字典,再将其赋值到DesiredCapabilities中。
修正后的完整代码
${dc} Evaluate sys.modules['selenium.webdriver'].DesiredCapabilities.PHANTOMJS sys, selenium.webdriver # 创建自定义请求头字典 ${custom_headers} Create Dictionary Authorization=Basic <Credentials> # 将自定义头字典赋值到PhantomJS的capability中 Set To Dictionary ${dc} phantomjs.page.customHeaders=${custom_headers} # 构建service参数列表 ${service args} Create List --proxy=localhost:8080 --web-security=false --ignore-ssl-errors=yes --ssl-protocol=ANY --load-images=yes # 正确启动PhantomJS浏览器 Create Webdriver PhantomJS service_args=${service args} executable_path=/usr/sap/ljs/webapps/s4c/WEB-INF/classes/WebDriver/phantomjs desired_capabilities=${dc}
额外注意事项
- 确保你的Selenium版本和PhantomJS版本兼容,毕竟PhantomJS已经停止维护,新版本Selenium可能不再支持它,如果可以的话建议替换为Headless Chrome/Firefox。
- 替换代码中的
<Credentials>为你实际经过Base64编码的账号密码字符串(格式是用户名:密码编码后的结果)。
内容的提问来源于stack exchange,提问作者Naveen K.V.
相关产品推荐
相关产品推荐

