我希望有人可以帮助我解决phantomJS问题。
我正在unix 64位上运行版本1.9.8,作为注册到在jenkins上运行的selenium hub的节点。如果我导航到带有链接的HTML页面(没有ID
或name
,这就是为什么我要通过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/