【发布时间】:2017-02-01 11:26:24
【问题描述】:
我正在使用 Selenium 和 Java 编写一些自动化测试。
我尝试访问的页面需要身份验证,对于 chromeDriver,我只需在 URL 上传递用户名和密码,如下所示:
http://USERNAME:PASSWORD@www.mydomain.com
这工作正常,但使用 PhantomJS 我无法让页面进行身份验证,所以我最终只能选择 about:blank
我已经尝试将它添加到 phantomJS 驱动程序实例的所需功能中,但它仍然不起作用:
desiredCapabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, new String[] {"--web-security=false", "--ignore-ssl-errors=true", "--ssl-protocol=any", "--proxy-auth=USERNAME:PASSWORD"});
谁能告诉我如何使用 PhantomJS 来实现这个功能?
如果重要的话,我的密码确实包含特殊字符(@)
答案::: 我自己找到了解决方案,但我会将其留给遇到此问题的其他人。
它在 ChromeDrive 中通过 URL 上的 USERNAME:PASSWORD@DOMAIN 但在 PhantomJS 中运行良好,我尝试了不同的方法在 PhantomJS 所需的功能上设置 --proxy-auth 但它没有超出身份验证屏幕。
解决方案很简单,当我给它提供带有用户名和密码的 URL 时,我只需要对密码中的 @ 符号进行编码,所以我将 @ 更改为 %40,它在 ChromeDriver 和 PhantomJS 中运行良好。
我猜 chromeDriver 会解析 URL 以查看域的开始位置,但 GhostDriver 必须只查找第一个 @ 并假设之后的所有内容都是域。
【问题讨论】:
-
您应该将答案作为答案发布并接受 - 这样您将表明问题已解决,并且对以后的人们有用。
-
谢谢@Vaviloff 我已经添加了答案,但直到明天我才能接受。
标签: java selenium authentication phantomjs