我希望有人可以帮助我解决phantomJS问题。
我正在unix 64位上运行版本1.9.8,作为注册到在jenkins上运行的selenium hub的节点。如果我导航到带有链接的HTML页面(没有IDname,这就是为什么我要通过xpath对其进行寻址-不幸的是,由于它是外部输入,因此我无法更改html代码),正在尝试单击它以导航到下一个页面。使用Firefox驱动程序可以正常工作,并且如果我启动本地硒服务器(Windows,phantomJS v.9.8.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());




在本地硒上输出(Windows):

current url before click: https://initialpage.html
current url after click: https://www.my-link.com




在远程硒网格(unix)上的输出:

current url before click: https://initialpage.html
current url after click: https://initialpage.html




没有错误或类似现象,似乎驱动程序确实停留在旧页面上。我已经在实例化WebDriver时尝试了其他phantomjs.cli.args,添加了多个thread.sleep()并用

getDriver().navigate().to(getDriver().findElement(By.xpath("//a")).getAttribute("href"));


但输出保持不变。

以防万一,在这里,我是如何实例化webdriver的:

 driver = new RemoteWebDriver(new URL("http://servername:4444/wd/hub"), DesiredCapabilities.phantomjs());


非常感谢您的帮助,感谢大家的辛苦!如有任何疑问,请随时提问!提前致谢!

最佳答案

因此,以防万一有人偶然发现了这个线程,我终于在数小时的绝望之后设法弄清了它。问题是缺少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);

关于java - PhantomJS WebDriver headless :“。click”方法无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37880752/

10-11 15:05
查看更多