Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Selenium Webdriver实现无头/无头自动化_Java_Selenium_Selenium Webdriver_Phantomjs_Headless Browser - Fatal编程技术网

Java 使用Selenium Webdriver实现无头/无头自动化

Java 使用Selenium Webdriver实现无头/无头自动化,java,selenium,selenium-webdriver,phantomjs,headless-browser,Java,Selenium,Selenium Webdriver,Phantomjs,Headless Browser,我想通过在无头模式下运行浏览器,在我的低规格Windows设备上节省一些资源。据我所知,+是将此类任务与Selenium Webdriver一起使用的标准选择。但是,在尝试之后,立即遇到了警报处理方面的问题。具体而言,将返回以下异常: [ERROR - 2016-08-01T04:24:24.894Z] RouterReqHand - _handle.error - {"name":"Invalid Command Method"," . . . "} 由于执行以下操作时不支持getAlert

我想通过在无头模式下运行浏览器,在我的低规格Windows设备上节省一些资源。据我所知,+是将此类任务与Selenium Webdriver一起使用的标准选择。但是,在尝试之后,立即遇到了警报处理方面的问题。具体而言,将返回以下异常:

[ERROR - 2016-08-01T04:24:24.894Z] RouterReqHand - _handle.error - {"name":"Invalid Command Method"," . . . "}
由于执行以下操作时不支持
getAlertText
WebDriver
命令

Alert alert = driver.switchTo().alert();
特别是在
EventFiringWebDriver
中实现的此方法:

public Alert alert() {
  return targetLocator.alert();
}

我正在寻找替代方法或可行的解决方法。有人吗?

我可以通过直接使用JavaScript执行警报处理来解决这个问题,如下所示:

JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("window.alert = function(){}");
jsExecutor.executeScript("window.confirm = function(){return true;}");

目前,似乎无法通过PhantomJS的
WebDriver
接口直接执行该操作。

我已经能够通过直接使用JavaScript执行警报处理来解决这个问题,如下所示:

JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("window.alert = function(){}");
jsExecutor.executeScript("window.confirm = function(){return true;}");

目前,似乎没有办法通过PhantomJS的
WebDriver
界面直接执行该操作。

什么是PhantomJS似乎不支持的??这只是意味着警报将不会由驱动程序本身处理。您需要切换到警报并根据您的选择接受或取消…@SaurabhGaur我的意思是
getAlertText
WebDriver
命令在内部不受支持,将返回异常。请参阅我的编辑。您调用了错误的方法。它是
alert.getText()取而代之……:)什么意思似乎不受PhantomJS支持??这只是意味着警报将不会由驱动程序本身处理。您需要切换到警报并根据您的选择接受或取消…@SaurabhGaur我的意思是
getAlertText
WebDriver
命令在内部不受支持,将返回异常。请参阅我的编辑。您调用了错误的方法。它是
alert.getText()而不是..:)如果您在无头模式下运行chrome canary,也可以解决此问题,谢谢!另外,如果您在无头模式下运行chrome canary,也可以提供解决方案,谢谢!