Phantomjs驱动程序:获取网址不适用于https

时间:2015-12-02 10:18:56

标签: java selenium automation phantomjs ghostdriver

我使用phantomJS驱动程序自动执行某些测试。在主页上,如果我获得了一个webElement并输出了href,我可以将它复制到浏览器并打开页面,但在测试时我执行driver.get(loginLink.getAttribute(" href"))它只是停留在同一页面上。

它在实际网站上运行良好,但在我们的内部分期网站上却没有。

我已经补充道 caps.setCapability(CapabilityType.ACCEPT_SSL_CERTS,true);

但我仍然无法打开登录页面。任何人都可以建议造成这种情况的原因吗?

更新: 更多测试我发现它只是不会加载的https页面

1 个答案:

答案 0 :(得分:0)

使用https时,phantomjs默认为SSL 3.0。由于SSL 3.0在大量主机上被禁用,因为它不安全,因此SSL握手将失败。使用phantomjs --ignore-ssl-errors=true--web-security=false--ssl-protocol=any可以让phantomjs使用更现代的版本(TLS1.0或更高版本)。

phantomJS在设置功能时使用不同的机制

static ArrayList<String> cliArgsCap = new ArrayList<String>();
capabilities = DesiredCapabilities.phantomjs();
cliArgsCap.add("--web-security=false");
cliArgsCap.add("--ssl-protocol=any");
cliArgsCap.add("--ignore-ssl-errors=true");
capabilities.setCapability("takesScreenshot", true);
capabilities.setCapability(
    PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap);
capabilities.setCapability(
    PhantomJSDriverService.PHANTOMJS_GHOSTDRIVER_CLI_ARGS,
        new String[] { "--logLevel=2" });
this.driver = new PhantomJSDriver(capabilities);

希望它会有所帮助:)