【问题标题】:Testing with a selenium driver in Java without opening any browser在不打开任何浏览器的情况下使用 Java 中的 selenium 驱动程序进行测试
【发布时间】:2012-07-05 21:46:30
【问题描述】:

我需要在 Java 中使用 selenium chrome 驱动程序进行测试。但不应打开 chrome 窗口。假设这是一个产品,不应打开任何窗口。

我也看过这个; Is it possible to hide the browser in Selenium RC? 但对我来说没有解决方案。测试应该是独立于操作系统的,我已经尝试过 HtmlUnitDriver 进行测试而不打开任何窗口,但它有一些问题。当存在通过id查找组件时,可能无法通过id查找组件。一些服务器可能会根据浏览器发送组件 id,我不知道应该使用什么 id 来测试。

因此,我正在尝试使用 chrome 驱动程序。

有没有办法在不打开 chrome 窗口的情况下使用 chromedriver,或者在 Java 中不用 Selenium 打开任何窗口的情况下进行测试?

谢谢!

【问题讨论】:

  • 我相信 selenium 使用浏览器的 DOM 引擎,我不相信隐藏特定于浏览器的驱动程序窗口是可能的。
  • 链接问题中接受的答案列出了我所知道的所有可能性。尝试再给 HtmlUnitDriver 一次机会 - 但be sure to have JavaScript support enabled。如果您特别想要 Chrome,则必须使用 Saucelabs、Linux 和无头驱动程序,或者提到的远程调用另一台运行测试的计算机。

标签: java selenium selenium-chromedriver


【解决方案1】:

使用 Java,您可以使用 JSOUP 库,然后使用 selenium 来检查文档。

Document doc = Jsoup.connect("PUT THE LINK")
                  .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36")
                  .get();

然后,使用 selenium,您可以制作如下内容:doc.getElementByClassName 等。

【讨论】:

    【解决方案2】:

    在 selenium 网络驱动程序中有无头模式。所以在无头模式下,您可以在不打开网络浏览器的情况下进行自动化。你也可以在无 gui 系统中部署你的应用程序

        ChromeOptions options = new ChromeOptions();
        // setting headless mode to true.. so there isn't any ui
        options.setHeadless(true);
    
        // Create a new instance of the Chrome driver
        WebDriver driver = new ChromeDriver(options);
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    【解决方案3】:

    我喜欢这个article

    基本上你需要在pom中添加PhantomJS依赖(我喜欢maven进行依赖管理):

    <dependency>
        <groupId>com.github.detro.ghostdriver</groupId>
        <artifactId>phantomjsdriver</artifactId>
        <version>1.1.0</version>
    </dependency>
    

    然后运行代码

        System.setProperty( "phantomjs.binary.path", "c:\\path\\to\\phantomjs-1.9.8-windows\\phantomjs.exe" );
        WebDriver driver = new PhantomJSDriver();
        driver.get("http://www.google.com");
        driver.quit();
    

    它适用于我的版本:

    • PhantomJS 1.9.8
    • PhantomJS 驱动程序 1.1.0
    • 硒 2.44.0

    【讨论】:

      【解决方案4】:

      使用 PhantomJS,但如果需要在 chromedriver 中运行它们并且您有资源,则此博客在 running headless selenium with chrome 上有一个很好的配方。要求您下载以下...

      • 虚拟盒子
      • 流浪者
      • NodeJS

      如果您计划在未来实施 Jenkins 或任何其他 CI,我强烈建议您使用 PhantomJS。

      【讨论】:

        【解决方案5】:

        GhostDriver and PhantomJS 应该让你为所欲为。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-08
          • 1970-01-01
          • 1970-01-01
          • 2016-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多