Selenium - Webdriver
WebDriver 是一个用于自动测试 Web 应用程序的工具。它通常被称为 Selenium 2.0。WebDriver 使用不同的底层框架,而 Selenium RC 使用嵌入在浏览器中的 JavaScript Selenium-Core,这有一些限制。WebDriver 直接与浏览器交互,无需任何中介,不像 Selenium RC 依赖于服务器。它用于以下上下文 -
多浏览器测试,包括 Selenium RC (Selenium 1.0) 未很好支持的浏览器改进功能。
处理多个框架、多个浏览器窗口、弹出窗口和警报。
复杂的页面导航。
高级用户导航,例如拖放。
基于 AJAX 的 UI 元素。
建筑学
WebDriver 最好用一个简单的架构图来解释,如下所示。
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”。
步骤 2 - 单击“浏览”按钮选择工作区。
步骤 3 - 现在从“文件”菜单创建一个“新项目”。
步骤 4 - 输入项目名称并单击“下一步”。
步骤 5 - 转到“库”选项卡并选择我们已下载的所有 JAR。添加对 Selenium WebDriver Library 文件夹的所有 JAR 以及 selenium-java-2.42.2.jar 和 selenium-java-2.42.2-srcs.jar 的引用。
步骤 6 - 创建包,如下所示。
步骤 7 - 现在右键单击包并选择“新建”>>“类”以创建“类”。
步骤 8 - 现在命名该类并使其成为主函数。
步骤 9 - 课程大纲如下所示。
步骤 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 - 上述脚本的输出将打印在控制台中。
最常用的命令
下表列出了 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 | 驱动程序.刷新() 刷新当前页面。 |