Selenium自动化测试





5.00/5 (3投票s)
Selenium 自动化测试工具的概述,及其优点和局限性。
引言
Selenium 是一套用于 Web 浏览器自动化的工具集,它利用现有的最佳技术来远程控制浏览器实例并模拟用户与浏览器的交互。它是目前最广泛使用的自动化测试工具。
Selenium 提供三个主要工具
- Selenium IDE
- Selenium Web Driver
- Selenium Grid
本文将介绍 Selenium IDE 和 Webdriver。
背景
在大多数项目中,当新更改发布时,都有在任何时间进行回归测试的需求。自动化工具可以帮助我们减少测试时间、查找 bug 并提高质量。
Using the Code
Selenium IDE
Selenium IDE 是一个浏览器插件,可以记录和回放用户与浏览器的交互。让我们看看如何在 Chrome 浏览器中使用 Selenium IDE。
- 在 Chrome 中添加 Selenium IDE 扩展:打开 Chrome 浏览器 -> 扩展程序 -> 打开 Chrome 网上应用店 -> 搜索“Selenium IDE” -> 添加到 Chrome -> 现在您应该能在浏览器中看到 Selenium IDE 图标。
- 点击 Selenium IDE 图标 -> 点击 创建新项目 -> 输入项目名称(例如:
DemoSeleniumIDEPrj
) - 提供应用程序 URL(C# 示例 Web 应用程序项目可以从 sampleaspnetwebapplication 下载)。此示例应用程序包含一个登录页面和一个主页。点击右上角的 录制 按钮。这应该会在浏览器中打开应用程序的登录页面。
- 输入用户名和密码 -> 点击 提交。应用程序将重定向到 员工列表 页面。
- IDE 应该会记录上述步骤,您可以再次运行测试,看看它是否会执行相同的步骤。成功运行的测试应该显示为绿色。
Selenium 中的命令使用 Selenese 语言编写。命令(例如:open
、type
、click
等)帮助 Selenium 理解要执行的操作。 - Selenium IDE 中的测试可以导出为脚本,使用以下一种语言:C# NUnit 选项将创建一个 .cs 文件。
限制
- 无法进行数据驱动测试。
- 无法进行数据库测试。
- 无法测试 Web 应用程序中的动态操作。
- 没有办法导出测试结果报告。
- 不能用于广泛的操作。
Selenium WebDriver
WebDriver 是一个用于创建和运行测试的 API(应用程序编程接口),它是一个跨平台测试框架。它解析命令并在 Web 元素上执行操作。它支持 Junit、NUnit、TestNG 等测试框架。各种编程语言的 WebDriver 可以从官方 Selenium 网站下载。
WebDriver C# API 参考:Dotnet
WebDriver API 命令大致可分为三类
- 浏览器命令
- 获取网页:
driver.get("www.google.com")
- 获取当前网页标题:
driver.getTitle();
- 获取当前网页的 URL:
driver.getCurrentUrl();
- 获取网页:
- 导航命令
- 刷新当前网页:
driver.navigate().refresh();
- 在现有浏览器窗口中点击前进按钮:
driver.navigate().forward();
- 刷新当前网页:
- Web 元素命令
- 清除元素:
driver.findElement(By.id("UserName")).clear();
- 点击元素:
driver.findElement(By.id("UserName")).click();
- 清除元素:
WebDriver 架构
要创建和运行 C# WebDriver
测试,您需要以下内容
- Visual Studio
- 测试框架(在下面的示例中我们将使用 NUnit)
- Selenium WebDriver
- Chromedriver 可执行文件
请按照以下步骤设置和运行 Webdriver 测试。
- 打开 Visual Studio -> 创建新的类库项目(文件 -> 新建 -> 项目)
- 使用 NuGet 将 WebDriver 和 NUnit 框架添加到 Visual Studio 项目。NuGet 是一个依赖管理工具,可以从存储库拉取 WebDriver 和 NUnit 等所有包。点击 工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet 程序包。
添加程序包后,已安装选项卡应如下所示
- 将“从 Selenium IDE 导出的脚本(.cs 文件)”添加到 Visual Studio 项目。从 Selenium IDE 导出脚本可以节省编码时间。您也可以创建一个新测试并在此其中编写 Selenium 脚本。
脚本文件应如下所示
// Generated by Selenium IDE using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Threading; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.Remote; using OpenQA.Selenium.Support.UI; using OpenQA.Selenium.Interactions; using NUnit.Framework; [TestFixture] public class DemotestTest { private IWebDriver driver; public IDictionary<string, object> vars {get; private set;} private IJavaScriptExecutor js; [SetUp] public void SetUp() { driver = new ChromeDriver(); js = (IJavaScriptExecutor)driver; vars = new Dictionary<string, object>(); } [TearDown] protected void TearDown() { driver.Quit(); } [Test] public void demotest() { driver.Navigate().GoToUrl("https://:64031/"); driver.Manage().Window.Size = new System.Drawing.Size(1066, 824); driver.FindElement(By.Id("username")).Click(); driver.FindElement(By.Id("username")).SendKeys("demo"); driver.FindElement(By.Id("password")).SendKeys("demopwd"); driver.FindElement(By.Id("btnsubmit")).Click(); driver.Close(); } }
- 要通过 xpath 查找元素(例如:
driver.FindElement(By.XPath("//input[@id='username']")));
),请使用 Chropath。Chropath 是 Chrome 扩展程序。添加后,您可以在开发者工具(F12)下看到它,如下所示。 - 要运行测试,需要“
ChromeDriver
”。下载 ChromeDriver,解压缩并将其放入 Windows 路径(例如:Windows 10 下的c:\windows)。您可以通过转到命令提示符 ->c:\windows ->Chromedrive.exe 来测试ChromeDriver
。您将看到“Starting ChromeDriver”。使用测试资源管理器运行测试。这应该会在 Chrome 浏览器中打开应用程序并执行写入的步骤。步骤按顺序执行。如果测试通过,测试将变为绿色。
关注点
优点
- 开源工具:免费且无需购买。
- 浏览器和平台独立:由于它是使用 JavaScript 开发的,因此它支持大多数浏览器,如 Chrome、Firefox、Internet Explorer、Edge、Safari、Opera,并且支持 Windows、Mac 和 Linux 等操作系统。
- 多种编程语言的 Web 驱动程序:为了编写自动化脚本,提供了 C#、Java、Ruby、Python 和 JavaScript 等编程语言的 Web 驱动程序。
- 节省时间且不易出错:在执行重复测试时节省大量时间,并避免手动错误。
结论
本文介绍了 Selenium IDE 和 WebDriver,使用它们进行自动化测试,使用 WebDriver 和 NUnit 编写测试脚本。
历史
- 2021 年 5 月 13 日:初始版本