使用Java中的selenium驱动程序进行测试,无需打开任何浏览器

时间:2012-07-05 13:18:46

标签: java selenium selenium-chromedriver

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

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

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

有没有办法使用chromedriver而无需打开镀铬窗口或其他方式进行测试而不用Java中的Selenium打开任何窗口?

感谢!

5 个答案:

答案 0 :(得分:6)

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

  • VirtualBox的
  • 流浪
  • 的NodeJS

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

答案 1 :(得分:2)

GhostDriver and PhantomJS应该让你做你想做的事。

答案 2 :(得分:1)

在selenium web驱动程序中有无头模式。所以在无头模式下,您可以在不打开Web浏览器的情况下进行自动化。您也可以在无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);

答案 3 :(得分:0)

我喜欢这个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
  • Selenium 2.44.0

答案 4 :(得分:0)

使用 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 等等。