我希望有人可以帮我解决我的 phantomJS 问题。
我在unix 64bit上运行1.9.8版作为一个节点,注册到运行在jenkins上的selenium hub。如果我导航到带有链接的HTML页面(没有ID
或name
,这就是我通过xpath
解决的问题 - 很遗憾我无法更改html代码是外部输入),我试图点击它导航到即将到来的页面。使用 Firefox驱动程序这没有任何问题,如果我启动本地selenium服务器(windows,phantomJS v.1.9.8),它也能正常工作。
我的代码:
System.out.println("current url before click: " + getDriver().getCurrentUrl());
getDriver().findElement(By.xpath("//a")).click();
System.out.println("current url after click: " + getDriver().getCurrentUrl());
本地硒(窗口)的输出:
current url before click: https://initialpage.html
current url after click: https://www.my-link.com
远程selenium网格(unix)上的输出:
current url before click: https://initialpage.html
current url after click: https://initialpage.html
没有错误或类似,似乎驱动程序确实留在旧页面上。我在实例化WebDriver时尝试了不同的phantomjs.cli.args
,添加了几个thread.sleep()
并将click()
替换为
getDriver().navigate().to(getDriver().findElement(By.xpath("//a")).getAttribute("href"));
但输出保持不变。
以防万一重要,以下是我实例化webdriver的方法:
driver = new RemoteWebDriver(new URL("http://servername:4444/wd/hub"), DesiredCapabilities.phantomjs());
我感谢任何帮助,谢谢你的努力!如果还有任何问题,请随时提出!提前谢谢!
答案 0 :(得分:0)
所以,如果有人偶然发现这个帖子,我终于在数小时和绝望之后弄明白了。问题是缺少ssl相关属性的webdriver的实例化。这就是我现在的工作方式:
final ArrayList<String> cliArguments = new ArrayList<String>();
cliArguments.add("--ssl-protocol=any");
final DesiredCapabilities dCap = DesiredCapabilities.phantomjs();
dCap.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArguments);
driver = new RemoteWebDriver(new URL("http://servername:4444/wd/hub"), dCap);