java - 使用 Selenium Webdriver 实现 headless /无 GUI 自动化

标签 java selenium selenium-webdriver phantomjs headless-browser

我想通过在 headless 模式下运行浏览器来节省低规范 Windows 机器上的一些资源。据我所知,PhantomJS + GhostDriver是与 Selenium Webdriver 一起使用的此类任务的标准选择。然而,在尝试之后,立即遇到了警报处理的问题 doesn't seem to be supported by PhantomJS 。具体来说,返回以下异常:

[ERROR - 2016-08-01T04:24:24.894Z] RouterReqHand - _handle.error - {"name":"Invalid Command Method"," . . . "}

由于执行时不支持 getAlertText WebDriver Command:

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 接口(interface)执行该操作。

关于java - 使用 Selenium Webdriver 实现 headless /无 GUI 自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38690490/

相关文章:

java - 使用 Selenium WebDriver 获取 Firebug 控制台输出

javascript - 如何在 contenteditable div 上模拟打字?

java - 如何按顺序运行不同类的 testNG 方法

java - 如何在应用程序首次启动时运行特定代码?

java - WebDriver driver=new FirefoxDriver() 这是编译时绑定(bind)还是运行时绑定(bind)?

javascript - 使用 Selenium 单击伪元素

java - 有没有办法单击我刚刚使用 java/selenium 安装的 chrome 扩展?

java - Eclipse 保持使用 bin/META-INF/persistence.xml

java - 框架上的 Selen 测试

java - 循环遍历值