Selenium - Webdriver


WebDriver 是一个用于自动测试 Web 应用程序的工具。它通常被称为 Selenium 2.0。WebDriver 使用不同的底层框架,而 Selenium RC 使用嵌入在浏览器中的 JavaScript Selenium-Core,这有一些限制。WebDriver 直接与浏览器交互,无需任何中介,不像 Selenium RC 依赖于服务器。它用于以下上下文 -

  • 多浏览器测试,包括 Selenium RC (Selenium 1.0) 未很好支持的浏览器改进功能。

  • 处理多个框架、多个浏览器窗口、弹出窗口和警报。

  • 复杂的页面导航。

  • 高级用户导航,例如拖放。

  • 基于 AJAX 的 UI 元素。

建筑学

WebDriver 最好用一个简单的架构图来解释,如下所示。

SeleniumIDE 92

Selenium RC 与 WebDriver

SeleniumRC Selenium网络驱动程序
Selenium RC 的架构很复杂,因为在开始测试之前需要启动并运行服务器。 WebDriver 的架构比 Selenium RC 更简单,因为它从操作系统级别控制浏览器。
Selenium 服务器充当浏览器和 Selenese 命令之间的中间人。 WebDriver直接与浏览器交互,并使用浏览器的引擎来控制它。
Selenium RC 脚本执行速度较慢,因为它使用 Javascript 与 RC 交互。 WebDriver 速度更快,因为它直接与浏览器交互。
Selenium RC 不支持无头执行,因为它需要真正的浏览器才能使用。 WebDriver可以支持无头执行。
这是一个简单而小的 API。 与 RC 相比,API 复杂且有点大。
较少面向对象的 API。 纯粹面向对象的API。
无法测试移动应用程序。 可以测试iPhone/Android应用程序。

使用 WebDriver 编写脚本

让我们了解如何使用 WebDriver。为了进行演示,我们将使用https://www.calculator.net/。我们将执行位于“数学计算器”下的“百分比计算器”。我们已经下载了所需的 WebDriver JAR。详细信息请参阅“环境设置”一章。

步骤 1 - 从提取的 Eclipse 文件夹中启动“Eclipse”。

SeleniumIDE 75

步骤 2 - 单击“浏览”按钮选择工作区。

SeleniumIDE 76

步骤 3 - 现在从“文件”菜单创建一个“新项目”。

SeleniumIDE 53

步骤 4 - 输入项目名称并单击“下一步”。

SeleniumIDE 77

步骤 5 - 转到“库”选项卡并选择我们已下载的所有 JAR。添加对 Selenium WebDriver Library 文件夹的所有 JAR 以及 selenium-java-2.42.2.jar 和 selenium-java-2.42.2-srcs.jar 的引用。

SeleniumIDE 78

步骤 6 - 创建包,如下所示。

SeleniumIDE 79

步骤 7 - 现在右键单击包并选择“新建”>>“类”以创建“类”。

SeleniumIDE 82

步骤 8 - 现在命名该类并使其成为主函数。

SeleniumIDE 80

步骤 9 - 课程大纲如下所示。

SeleniumIDE 81

步骤 10 - 现在是时候编码了。以下脚本更容易理解,因为它嵌入了注释来清楚地解释步骤。请查看“定位器”一章以了解如何捕获对象属性。

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class webdriverdemo {
   public static void main(String[] args) {
   
      WebDriver driver = new FirefoxDriver();
      //Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      //Launch website
      driver.navigate().to("http://www.calculator.net/");
      
      //Maximize the browser
      driver.manage().window().maximize();
      
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr[2]/td/input[2]")).click();

      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/font/b")).getText();

      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      //Close the Browser.
      driver.close();
   }
}

步骤 11 - 上述脚本的输出将打印在控制台中。

SeleniumIDE 83

最常用的命令

下表列出了 WebDriver 中一些最常用的命令及其语法。

先生。 命令与说明
1

驱动程序.get("URL")

导航到应用程序。

2

element.sendKeys("输入文本")

在输入框中输入一些文本。

3

元素.clear()

清除输入框中的内容。

4

select.取消全选()

取消选择页面上第一个 SELECT 中的所有 OPTION。

5

select.selectByVisibleText("一些文本")

选择具有用户指定输入的选项。

6

driver.switchTo().window("窗口名称")

将焦点从一个窗口移至另一个窗口。

7

driver.switchTo().frame("frameName")

从一个框架摆动到另一个框架。

8

driver.switchTo().alert()

帮助处理警报。

9

driver.navigate().to("URL")

导航至 URL。

10

driver.navigate().forward()

向前导航。

11

driver.navigate().back()

导航回来。

12

驱动程序.close()

关闭与驱动程序关联的当前浏览器。

13

驱动程序.quit()

退出驱动程序并关闭该驱动程序的所有关联窗口。

14

驱动程序.刷新()

刷新当前页面。