Selenium无头浏览器HTMLUnitDriver&PhantomJS

Selenium Web Driver是一个Web自动化工具,它使能够在不同的浏览器上运行测试。要将特定的浏览器与Selenium一起使用,需要相应的驱动程序。

在测试运行时,Selenium启动脚本中调用的相应浏览器并执行测试步骤。可以看到浏览器和运行中的测试执行。

什么是无头浏览器?

无头浏览器就是Web浏览器在没有图形用户界面的情况下。此程序的行为与浏览器类似,但不会显示任何GUI。

无头驱动程序的一些示例包括

  • HtmlUnit
  • Ghost
  • PhantomJS
  • ZombieJS
  • Watir-WebDriver

在本教程中,我们将重点介绍HtmlUnit和Phtom JS

HTMLUnitDriver

HTML UnitDriver是WebDriver中重量最轻、实现速度最快的无头浏览器。它被称为 无头浏览器驱动程序 。它与Chrome、IE或Firefox驱动程序相同,但它没有GUI,因此无法在屏幕上看到测试执行情况。

HTML单元驱动程序的功能

  • 支持HTTPS和HTTP协议
  • 支持HTML响应(点击链接、提交表单、遍历HTML文档的DOM模型等)
  • 支持Cookie
  • 代理服务器支持
  • 支持基本身份验证和NTLM身份验证
  • 太棒了JavaScript支持
  • 支持提交方法GET和POST
  • 能够自定义发送到服务器的求头
  • 能够确定来自服务器的失败响应是否应该引发异常,还是应该作为适当类型的页面返回

结合使用Selenium的HTMLUnit驱动程序的步骤

步骤1) 在Eclipse中,复制以下代码。添加舞台不需要额外的JAR文件。

package  htmldriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class htmlUnitYest {
    public static void main(String[] args) {
        // Creating a new instance of the HTML unit driver
        WebDriver driver = new HtmlUnitDriver();
        // Navigate to Google
        driver.get("http://www.google.com");
        // Locate the searchbox using its name
        WebElement element = driver.findElement(By.name("q"));
        // Enter a search query
        element.sendKeys("Guru99");
        // Submit the query. Webdriver searches for the form using the text input element automatically
        // No need to locate/find the submit button
        element.submit();
        // This code will print the page title
        System.out.println("Page title is: " + driver.getTitle());
        driver.quit();
    }
}

步骤2)运行代码。将看到没有启动浏览器,并且结果显示在控制台中。

HTMLUnitDriver & PhantomJS for Selenium Headless Testing
HTMLUnitDriver & PhantomJS for Selenium Headless Testing

HTML单元驱动程序的优势:

  • 因为它不使用任何GUI进行测试,所以测试将在后台运行,不会出现任何视觉中断
  • 与所有其他实例相比,执行速度更快
  • 要通过HtmlUnit驱动程序运行测试,还可以选择其他浏览器版本
  • 它是独立于平台的,可以更轻松地同时运行多个测试。适用于负载测试。

限制:

  • 它不能模拟其他浏览器的JavaScript行为

幻影JS

PhantomJS是一个带有JavaScript API的无头浏览器。它是无头网站测试、访问和操作网页的最佳解决方案,并附带标准的DOM API。

要将PhantomJS与Seleniun一起使用,必须使用GhostDriver。 幽灵驱动程序 是PhantomJS的Simple JS中Webdriver Wire协议的实现。

Phtom JS的最新版本有 集成 GhostDriver和不需要单独安装。

系统的工作原理是这样的-

HTMLUnitDriver & PhantomJS for Selenium Headless Testing
HTMLUnitDriver & PhantomJS for Selenium Headless Testing

使用Phtom JS运行Selenium的步骤

步骤1) 需要安装有Selenium的Eclipse

步骤2) 下载PhantomJS这里

HTMLUnitDriver & PhantomJS for Selenium Headless Testing
HTMLUnitDriver & PhantomJS for Selenium Headless Testing

步骤3) 将下载的文件夹解压到Program Files

HTMLUnitDriver & PhantomJS for Selenium Headless Testing
HTMLUnitDriver & PhantomJS for Selenium Headless Testing

步骤4) 从下载PhantomJS驱动程序这里。将JAR添加到项目中

HTMLUnitDriver & PhantomJS for Selenium Headless Testing
HTMLUnitDriver & PhantomJS for Selenium Headless Testing

步骤5) 将以下代码粘贴到eclipse中

package htmldriver;
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
public class phantom {
    public static void main(String[] args) {
        File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");
        System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
        WebDriver driver = new PhantomJSDriver();
        driver.get("http://www.google.com");
        WebElement element = driver.findElement(By.name("q"));
        element.sendKeys("Guru99");
        element.submit();
        System.out.println("Page title is: " + driver.getTitle());
        driver.quit();
    }
}

步骤6) 运行代码。将看到输出显示在控制台中,并且没有启动浏览器。

注意事项 :第一次运行时,根据设置,可能会收到Windows的安全警告,以允许运行PhantomJS。单击Allow Access(允许访问)。

HTMLUnitDriver & PhantomJS for Selenium Headless Testing
HTMLUnitDriver & PhantomJS for Selenium Headless Testing

许多组织将Phantom.JS用于各种目的,例如,

  • 无头测试
  • 屏幕截图
  • 页面自动化
  • 网络监控
  • 要为其用户呈现仪表板屏幕快照,执行以下操作
  • 在命令行上运行单元测试
  • 要将员工手册从HTML生成为PDF,执行以下操作
  • 与用于测试套件的QUnit相结合

总结

在各种浏览器中快速测试应用程序,无任何视觉中断,无头浏览器测试是使用的。由于其速度、准确性和易于访问的特性,HTML单元驱动程序和PhantomJS正在获得越来越多的支持通过执行一些简单的步骤,可以了解这些工具与其他工具集成以及执行测试代码是十分容易的。

IT赶路人

专注IT知识分享