【问题标题】:authenticate on URL with phantomjs使用 phantomjs 在 URL 上进行身份验证
【发布时间】: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


【解决方案1】:

答案:::

我自己找到了解决方案,但我会将其留给遇到此问题的其他人。

它在 ChromeDrive 中通过 URL 上的 USERNAME:PASSWORD@DOMAIN 但在 PhantomJS 中运行良好,我尝试了不同的方法在 PhantomJS 所需的功能上设置 --proxy-auth 但它没有超出身份验证屏幕。

解决方案很简单,当我给它提供带有用户名和密码的 URL 时,我只需要对密码中的 @ 符号进行编码,所以我将 @ 更改为 %40,它在 ChromeDriver 和 PhantomJS 中运行良好。

我猜 chromeDriver 会解析 URL 以查看域的开始位置,但 GhostDriver 必须只查找第一个 @ 并假设之后的所有内容都是域。

【讨论】:

    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    相关资源
    最近更新 更多