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)运行代码。将看到没有启动浏览器,并且结果显示在控制台中。
HTML单元驱动程序的优势:
- 因为它不使用任何GUI进行测试,所以测试将在后台运行,不会出现任何视觉中断
- 与所有其他实例相比,执行速度更快
- 要通过HtmlUnit驱动程序运行测试,还可以选择其他浏览器版本
- 它是独立于平台的,可以更轻松地同时运行多个测试。适用于负载测试。
限制:
- 它不能模拟其他浏览器的JavaScript行为
幻影JS
PhantomJS是一个带有JavaScript API的无头浏览器。它是无头网站测试、访问和操作网页的最佳解决方案,并附带标准的DOM API。
要将PhantomJS与Seleniun一起使用,必须使用GhostDriver。 幽灵驱动程序 是PhantomJS的Simple JS中Webdriver Wire协议的实现。
Phtom JS的最新版本有 集成 GhostDriver和不需要单独安装。
系统的工作原理是这样的-
使用Phtom JS运行Selenium的步骤
步骤1) 需要安装有Selenium的Eclipse
步骤2) 下载PhantomJS这里
步骤3) 将下载的文件夹解压到Program Files
步骤4) 从下载PhantomJS驱动程序这里。将JAR添加到项目中
步骤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(允许访问)。
许多组织将Phantom.JS用于各种目的,例如,
- 无头测试
- 屏幕截图
- 页面自动化
- 网络监控
- 要为其用户呈现仪表板屏幕快照,执行以下操作
- 在命令行上运行单元测试
- 要将员工手册从HTML生成为PDF,执行以下操作
- 与用于测试套件的QUnit相结合
总结
在各种浏览器中快速测试应用程序,无任何视觉中断,无头浏览器测试是使用的。由于其速度、准确性和易于访问的特性,HTML单元驱动程序和PhantomJS正在获得越来越多的支持通过执行一些简单的步骤,可以了解这些工具与其他工具集成以及执行测试代码是十分容易的。