PhantomJS WebDriver 无头:“.click”方法无效
PhantomJS WebDriver headless: ".click" Method has no effect
我希望有人能帮助我解决我的 phantomJS 问题。
我是 unix 64 位上的 运行 版本 1.9.8 作为注册到 jenkins 上的 selenium hub 运行 的节点。如果我导航到带有 link 的 HTML 页面(没有 ID
或 name
,这就是我通过 xpath
解决它的原因 - 不幸的是我无法更改 html 代码,因为它是外部输入),我正在尝试单击它以导航到下一页。使用 Firefox Driver 这没有任何问题,如果我启动本地 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());
本地硒(windows)的输出:
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"));
但输出保持不变。
以防万一,这是我实例化网络驱动程序的方式:
driver = new RemoteWebDriver(new URL("http://servername:4444/wd/hub"), DesiredCapabilities.phantomjs());
感谢任何帮助,感谢你们的努力!如果还有任何问题,请随时提出!提前致谢!
因此,为了以防万一有人无意中发现了这个话题,经过数小时的绝望,我终于设法解决了这个问题。问题是 webdriver 的实例化缺少 ssl 相关 属性。这就是我现在的工作方式:
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);
我希望有人能帮助我解决我的 phantomJS 问题。
我是 unix 64 位上的 运行 版本 1.9.8 作为注册到 jenkins 上的 selenium hub 运行 的节点。如果我导航到带有 link 的 HTML 页面(没有 ID
或 name
,这就是我通过 xpath
解决它的原因 - 不幸的是我无法更改 html 代码,因为它是外部输入),我正在尝试单击它以导航到下一页。使用 Firefox Driver 这没有任何问题,如果我启动本地 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());
本地硒(windows)的输出:
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"));
但输出保持不变。
以防万一,这是我实例化网络驱动程序的方式:
driver = new RemoteWebDriver(new URL("http://servername:4444/wd/hub"), DesiredCapabilities.phantomjs());
感谢任何帮助,感谢你们的努力!如果还有任何问题,请随时提出!提前致谢!
因此,为了以防万一有人无意中发现了这个话题,经过数小时的绝望,我终于设法解决了这个问题。问题是 webdriver 的实例化缺少 ssl 相关 属性。这就是我现在的工作方式:
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);