Selenium C# 教程:NUnit 框架示例
⚡ 智能摘要
Selenium WebDriver 通过 IWebDriver 接口从 C# 驱动浏览器,而 NUnit 提供测试属性、断言和测试资源管理器报告,将这些浏览器步骤转换为可重复的自动化测试。

Selenium 概述
Selenium 是一个开源的网络 自动化测试 支持多种浏览器和多种操作系统的工具。它允许测试人员使用多种编程语言,例如 Java,C#, Python使用 Ruby、PHP 和 Perl 编写自动化测试。如果您是该工具的新手,请从以下语言开始: Selenium 教程 和 WebDriver 与 Selenium RC 比较.
Selenium 浏览器提供控制;你用来驱动它的语言提供结构。
C# 概述
C# 是一种面向对象的编程语言,源自 C++ 和 JavaC# 允许开发人员使用 Visual Studio 在 .NET 平台上构建应用程序。以下是其主要特性: C#.
- 它是一种面向对象的编程语言
- 支持控制台、Windows 和基于 Web 的应用程序开发
- 它提供了封装、继承、多态等特性。
接线前 Selenium 它有助于识别普通 C# 程序的结构。
C# 的基本语法
一个用 C# 编写的程序需要包含以下几个部分
- 命名空间声明
- 精品团课
- 类属性和方法
- 主要方法
- 程序语句
例-
下面是一个示例 Selenium C# 示例程序,用于打印文本“Guru系统控制台显示 99。
using System; namespace FirstProgram { class DemoPrint { static void main(){ Console.WriteLine("Guru99"); } } }
说明:
- 上面的命名空间 Selenium C# 示例是多个类的集合。每个命名空间都必须使用关键字“using”进行声明。
- 代码的第一条语句将命名空间“System”包含到我们的程序中。System 命名空间定义了 C# 中使用的基本类和事件。要使用的命名空间取决于程序要求。
- 第二条语句为类“DemoPrint”声明一个命名空间“FirstProgram”。C# 文件可以在同一个命名空间内包含多个类。
- 第三条语句包含类声明。一个类可能包含多个属性和多个方法。
- 第四条语句包含 Main 方法的声明。main 方法是每个类的执行入口点。
- 最后一条语句是用于将语句打印到控制台的 C# 语法。WriteLine 是一个方法。
Console类。请注意入口点拼写为Main在真正的 C# 中,大写字母 M;小写字母main上述示例中的元素将不会被识别为入口点。
语法明确之后,下一步就是安装编译和运行这些测试的工具。
Selenium 使用 C# 设置
如何使用 Selenium WebDriver:
现在在这个 Selenium C# 教程,让我们一步步学习如何设置 Visual Studio Selenium WebDriver:
Visual Studio 是一个集成开发环境 (IDE),开发人员可以使用它来构建跨多个平台的应用程序,例如 Windows, Android、iOS 和基于云的应用程序。
步骤1) 导航到 URL
https://visualstudio.microsoft.com/downloads/ 并点击 “免费下载” Visual Studio 社区选项卡上显示的按钮
步骤2) 打开下载的 exe 文件。如果要求管理员权限,请单击“是”。
步骤3) 会出现以下弹出窗口。点击“继续”按钮。
文件将被下载,如下面的弹出窗口所示。
步骤4) 在下一个屏幕中,
选中复选框
- 普遍 Windows 平台开发
- .NET桌面开发
点击“安装”。
等待每个组件的安装完成。文件大小为 16GB,需要一些时间。
步骤5) 将显示以下弹出窗口。单击“重新启动”按钮。
步骤6) 重启机器后,在开始菜单上搜索“Visual Studio”,点击搜索结果,出现如下弹窗,如果没有账号,点击“现在不注册,以后再注册”链接。
步骤7) 在下一个屏幕中,
- 选择你喜欢的颜色主题
- 点击“启动 Visual Studio”按钮
步骤8) Visual Studio“开始”屏幕将会出现。
在 Visual Studio 中创建一个新项目:
步骤1) 在文件菜单中,单击新建>项目
步骤2) 在下一个屏幕中,
- 选择选项“Visual C#”
- 单击控制台应用程序(.Net Framework)
- 输入姓名“Guru99“
- 单击确定
步骤3) 项目成功创建后将显示以下屏幕。
使用以下方式设置 Visual Studio Selenium WebDriver:
步骤1) 导航至工具 -> NuGet 包管理器 -> 管理 NuGet 解决方案包
步骤2) 在下一个屏幕中
- 寻找 Selenium 在结果屏幕上
- 选择第一个搜索结果
- 勾选项目复选框
- 点击“安装”
步骤3) 在弹出的屏幕中点击“确定”按钮
步骤4) 一旦包成功安装,将显示以下消息。
Selenium 现在可以打开浏览器,但还不能报告测试是否通过。这需要单元测试框架来完成。
NUnit 框架:概述
NUnit 是 单元测试 Visual Studio 支持的框架和 Selenium WebDriver。NUnit 是 .NET 应用程序中最广泛使用的单元测试框架。NUnit 以易于阅读的格式呈现测试结果,并允许测试人员调试自动化测试。
我们需要在 Visual Studio 中安装 NUnit 框架和 NUnit 测试适配器才能使用它。
安装 NUnit 框架的步骤
现在在这个 Selenium 通过 C# 教程,让我们了解安装 NUnit 框架的过程:
步骤1) 导航至工具 -> NuGet 包管理器 -> 管理 NuGet 解决方案包
步骤2) 在下一个窗口中
- 搜索 NUnit
- 选择搜索结果
- 选择项目
- 单击安装
步骤3) 会出现下面的弹出窗口。单击“确定”按钮。
步骤4) 安装完成后将出现以下消息。
下载 NUnit 测试适配器的步骤
现在,在本 NUnit 教程中,我们将介绍下载 NUnit 测试适配器的步骤:
请注意,以下步骤仅适用于 32 位机器。对于 64 位机器,您需要按照下面提到的相同过程下载“NUnit3 测试适配器”。
当前软件包: 现代项目安装 NUnit3TestAdapter 连同 Microsoft.NET.Test.Sdk以及年长的 NUnitTestAdapter 该软件包已停止维护。在 .NET (Core) 中,整个项目可以使用脚手架搭建。 dotnet new nunit它会为您添加所有三个套餐。
步骤1) 导航至工具 ->NuGet 包管理器 -> 管理 NuGet 解决方案包。在该屏幕中,
- 搜索 NUnitTestAdapter
- 点击搜索结果
- 选择项目
- 单击安装
步骤2) 在确认弹出窗口中单击“确定”。安装完成后,您将看到以下消息:
两部分都已安装完毕,下一步是将它们合并到一个测试类中。
Selenium 和 NUnit 框架
Selenium 与 NUnit 框架的集成允许测试人员区分不同的测试类。NUnit 还允许测试人员使用 SetUp、Test 和 TearDown 等注释在运行测试之前和之后执行操作。
NUnit 框架可以与 Selenium 通过创建 NUnit 测试类并使用 NUnit 框架运行该测试类。 Java 这种模式的等效形式已在以下部分中介绍: JUnit 框架教程此外,本文还讨论了 Visual Studio 中 NUnit 的 .NET 替代方案。 TestNG HPMC胶囊 Selenium.
以下步骤 Selenium 需要 C# 框架教程来使用 NUnit 框架创建和运行测试类。
创建 NUnit 测试类的步骤 Selenium:
步骤1) 在解决方案资源管理器中,右键单击项目 > 添加 > 类
步骤2) 将出现班级创建窗口。
- 为班级提供名称
- 点击添加按钮
步骤3) 将出现以下屏幕。
步骤4) 将以下代码添加到创建的类中。请注意,在 Chrome 驱动程序初始化期间,您需要指定“chromedriver.exe”文件的位置。 Selenium 4.6 及更高版本 Selenium 经理它会自动解析匹配的驱动程序,因此 new ChromeDriver() 当前形式不带路径参数——下面的路径被保留,因为它与屏幕截图匹配。
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Firefox; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class Guru99Demo { IWebDriver driver; [SetUp] public void startBrowser() { driver = new ChromeDriver("D:\\3rdparty\\chrome"); } [Test] public void test() { driver.Url = "http://www.google.co.in"; } [TearDown] public void closeBrowser() { driver.Close(); } } }
步骤4) 点击“构建”->“构建解决方案”
注意: 构建时,你可能会收到类似“不包含适合入口点的静态‘main’方法”的错误
要解决此问题,请转到“项目”>“属性”,并将“输出类型”更改为“类库”。默认值为“控制台应用程序”。
步骤5) 构建成功后,我们需要打开测试资源管理器窗口。单击测试 -> Windows -> 测试资源管理器
步骤6) 测试资源管理器窗口打开,其中列出了可用的测试。右键单击测试资源管理器并选择运行选定的测试
步骤7) Selenium 必须使用指定方式打开浏览器。 URL 然后关闭浏览器。测试用例状态将在测试资源管理器窗口中更改为“通过”。
通过测试证明管道系统运行正常。接下来是你在实际编写测试题时会用到的词汇。
Selenium C# 中的 WebDriver 命令
C# 使用接口“IWebDriver”与浏览器交互。以下是可用的命令类别 Selenium 在 C# 中。
- 浏览器命令
- Web 元素命令
- 下拉命令
现在在这个 Selenium C#教程,让我们来学习一下。 Selenium WebDriver 指令逐条执行。 Java 本文展示了对应物。 第一个 WebDriver 脚本 演练。
以下命令仍然有效 IWebDriver 表面 Selenium 4,因此语法保持不变。
浏览器命令:
以下是 C# 中可用的浏览器命令列表 Selenium.
| 命令名称 | 描述 | 句法 |
|---|---|---|
| Url 命令 | 此命令用于打开指定的文件。 URL 在浏览器中。 |
driver.Url = "https://www.guru99.com"
|
| 标题命令 | 此命令用于检索当前打开的网页的页面标题 |
String title = driver.Title
|
| PageSource 命令 | 该命令用于检索当前打开的网页的源代码。 |
String pageSource = driver.PageSource
|
| 关闭命令 | 该命令用于关闭最近打开的浏览器实例。 |
driver.Close(); |
| 退出命令 | 此命令用于关闭所有打开的浏览器实例 |
driver.Quit(); |
| 返回命令 | 该命令用于导航到浏览器历史记录的上一页。 |
driver.Navigate().Back(); |
| 前进命令 | 此命令用于导航到浏览器历史记录的下一页。 |
driver.Navigate().Forward() |
| 刷新命令 | 该命令用于执行浏览器刷新。 |
driver.Navigate().Refresh() |
浏览器命令作用于窗口;下一组命令作用于窗口内的内容。
Web元素命令
WebElement 指的是网页上的任何元素。它们由 HTML 标签表示。按钮、文本框、链接、图像、表格和框架都是 WebElement。 Opera这些元素的交互是通过以下方式触发的: IWebElement 界面。要与 WebElement 交互,我们首先需要…… 找到元素 在页面上执行操作。可用的策略已在下文中介绍。 定位器 Selenium浏览器开发者工具——或者下面截图中显示的旧版 Firebug 和 Firepath 插件——可以用来识别…… XPath的 WebElement 的。
以下是 C# 中可用的 WebElement 命令。
| 命令名称 | 描述 | 句法 |
|---|---|---|
| 单击命令 | 此命令用于单击 Web 元素。要使元素可单击,元素必须在网页上可见。此命令也用于复选框和单选按钮操作。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.Click();
|
| 清除命令 | 此命令专门用于清除文本框现有的内容。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
element.Clear();
|
| SendKeys 命令 | 此命令用于在文本框中输入值。要输入的值必须作为参数传递给 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.SendKeys("guru99"); |
| 显示的命令 | 此命令用于识别特定元素是否显示在网页上。此命令返回布尔值;true 或 false 取决于 Web 元素的可见性。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Displayed; |
| 已启用命令 | 此命令用于识别网页上是否启用了特定 Web 元素。此命令返回布尔值;结果为 true 或 false。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Enabled; |
| 选定命令 | 此命令用于识别特定网页元素是否被选中。此命令适用于复选框、单选按钮和选择操作。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Selected; |
| 提交命令: | 此命令类似于 click 命令,不同之处在于 HTML 表单中是否有带有 Submit 类型的按钮。click 命令可单击任意按钮,而 submit 命令仅可单击带有 submit 类型的按钮。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.submit();
|
| 文本命令 | 此命令返回 Web 元素的内部文本。此命令返回字符串值作为结果。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String text=element.Text; |
| TagName 命令 | 此命令返回 Web 元素的 HTML 标签。它返回一个字符串值作为结果。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String tagName = element.TagName; |
| GetCSSValue 命令: | 此方法用于以 rgba 字符串(红色、绿色、蓝色和 Alpha)的形式返回 Web 元素的颜色。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String color = element.getCSSValue; 输出– 如果元素的颜色是红色,则输出为 rgba(255,0,0,1) |
关于以上示例的说明: 该表格重现了原始语法。在当前 Selenium .NET 成员采用 Pascal 命名法 — element.Submit() 和 element.GetCssValue("color") - 和 GetCssValue 以 CSS 属性名称作为参数。
下拉命令:
可以使用 SelectElement 类实现 C# 中的下拉操作。
以下是 C# 中可用的各种下拉操作。
| 命令名称 | 描述 | 句法 |
|---|---|---|
| SelectByText 命令 | 此命令根据选项的文本选择下拉菜单中的选项。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByText("Guru99"); |
| SelectByIndex 命令 | 此命令用于根据索引选择一个选项。下拉列表的索引从 0 开始。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByIndex("4"); |
| SelectByValue 命令 | 此命令用于根据选项值选择一个选项。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByValue("Guru99"); |
| 选项命令 | 此命令用于检索下拉菜单中显示的选项列表。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); List<IWebelement> options = select. Options; int size = options.Count; for(int i=0;i<options.size();i++) { String value = size.elementAt(i).Text; Console.writeLine(value); } 上述代码将所有选项在下拉菜单中打印到控制台上。 |
| IsMultiple 命令 | 此命令用于识别下拉列表是否为多选下拉列表;多选下拉列表允许用户一次选择多个选项。此命令返回一个布尔值。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); Boolean status = select.IsMultiple(); |
| DeSelectAll 命令 | 此命令用于多选下拉菜单。它清除已选择的选项。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectAll(); |
| DeSelectByIndex 命令 | 此命令使用其索引取消选择已选择的值。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByIndex("4"); |
| DeSelectByValue 命令 | 此命令使用其值取消选择已选择的值。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByValue("Guru99"); |
| DeSelectByText 命令 | 此命令使用其文本取消选择已选择的值。 |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByText("Guru99"); |
以下四个脚本将上述命令应用于…… Guru99 个演示站点。每个站点都是一个完整的、可运行的 NUnit 测试类。
Code 关于样品
示例 1:使用 XPATH 定位器单击链接:
测试场景:
- 导航至演示 Guru99 网页 – https://demo.guru99.com/test/guru99home/
- 最大化窗口
- 点击“测试”菜单
- 关闭浏览器
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("D:\\3rdparty\\chrome"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebelement link = m_driver.FindElement(By.XPath(".//*[@id='rt-header']//div[2]/div/ul/li[2]/a")); link.Click(); m_driver.Close(); } } }
示例 2:在文本中输入数据Box 并使用 XPATH 定位器单击按钮:
测试场景:
- 导航到 Guru99 演示页面 – https://demo.guru99.com/test/guru99home/
- 在电子邮件文本框中输入数据
- 点击注册按钮
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-email']")); IWebElement signUpButton = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-submit']")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
示例 3:在文本中输入数据Box 并使用 CSS 定位器单击按钮:
测试场景:
- 导航到 Guru99 演示页面 – https://demo.guru99.com/test/guru99home/
- 在电子邮件文本框中输入数据
- 点击注册按钮
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-email]")); IWebElement signUpButton = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-submit]")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
示例 4:在下拉列表中选择一个值:
测试场景:
- 导航到 Guru99 演示页面 – https://demo.guru99.com/test/guru99home/
- 点击 SAP 链接
- 在姓名和电子邮件文本框中输入数据
- 从课程下拉菜单中选择一个值
- 关闭浏览器
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI; namespace Guru99Demo { class TestSelect { IWebDriver m_driver; [Test] public void selectDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebElement course = m_driver.FindElement(By.XPath(".//*[@id='awf_field-91977689']")); var selectTest = new SelectElement(course); // Select a value from the dropdown selectTest.SelectByValue("sap-abap"); } } }
































