Selenium C# 教程:NUnit 框架示例

⚡ 智能摘要

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

  • 🔘 工具链: Visual Studio 加上 Selenium WebDriver、NUnit 和 NUnit 测试适配器 NuGet 包。
  • ☑️ 项目设置: 输出类型必须为类库,而不是控制台应用程序,否则构建将失败。
  • NUnit 属性: SetUp 打开浏览器,Test 执行操作,TearDown 关闭浏览器。
  • 🧪 命令组: 通过 SelectElement 实现浏览器命令、WebElement 命令和下拉命令。
  • 🛠️ 定位器: FindElement 接受 XPath 和 CSS 选择器策略,用于所有元素交互。
  • 执行机制: 测试资源管理器运行该类,并将每个结果报告为通过或失败。

Selenium 使用 NUnit 测试框架进行 C# 自动化测试

Selenium 概述

Selenium 是一个开源的网络 自动化测试 支持多种浏览器和多种操作系统的工具。它允许测试人员使用多种编程语言,例如 Java,C#, Python使用 Ruby、PHP 和 Perl 编写自动化测试。如果您是该工具的新手,请从以下语言开始: Selenium 教程WebDriver 与 Selenium RC 比较.

Selenium 浏览器提供控制;你用来驱动它的语言提供结构。

C# 概述

C# 是一种面向对象的编程语言,源自 C++ 和 JavaC# 允许开发人员使用 Visual Studio 在 .NET 平台上构建应用程序。以下是其主要特性: C#.

  1. 它是一种面向对象的编程语言
  2. 支持控制台、Windows 和基于 Web 的应用程序开发
  3. 它提供了封装、继承、多态等特性。

接线前 Selenium 它有助于识别普通 C# 程序的结构。

C# 的基本语法

一个用 C# 编写的程序需要包含以下几个部分

  1. 命名空间声明
  2. 精品团课
  3. 类属性和方法
  4. 主要方法
  5. 程序语句

例-

下面是一个示例 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 社区选项卡上显示的按钮

Visual Studio 下载页面,其中包含社区版免费下载按钮

步骤2) 打开下载的 exe 文件。如果要求管理员权限,请单击“是”。

Visual Studio 安装程序要求提供管理员权限

步骤3) 会出现以下弹出窗口。点击“继续”按钮。

Visual Studio 安装程序欢迎弹出窗口,其中包含“继续”按钮

文件将被下载,如下面的弹出窗口所示。

Visual Studio 安装程序正在下载组件文件

步骤4) 在下一个屏幕中,

选中复选框

  • 普遍 Windows 平台开发
  • .NET桌面开发

点击“安装”。

Visual Studio 工作负载屏幕(通用) Windows 平台和.NET桌面开发已勾选

等待每个组件的安装完成。文件大小为 16GB,需要一些时间。

Visual Studio 安装程序进度条,显示每个选定组件的进度。

步骤5) 将显示以下弹出窗口。单击“重新启动”按钮。

Visual Studio 安装程序提示重启计算机

步骤6) 重启机器后,在开始菜单上搜索“Visual Studio”,点击搜索结果,出现如下弹窗,如果没有账号,点击“现在不注册,以后再注册”链接。

Visual Studio 登录弹出窗口,带有“现在不登录,以后再说”链接

步骤7) 在下一个屏幕中,

  • 选择你喜欢的颜色主题
  • 点击“启动 Visual Studio”按钮

Visual Studio 首次启动屏幕,用于选择颜色主题

步骤8) Visual Studio“开始”屏幕将会出现。

安装完成后,将显示 Visual Studio 入门界面。

在 Visual Studio 中创建一个新项目:

步骤1) 在文件菜单中,单击新建>项目

Visual Studio 的“文件”菜单中,已选择“新建”和“项目”。

步骤2) 在下一个屏幕中,

  1. 选择选项“Visual C#”
  2. 单击控制台应用程序(.Net Framework)
  3. 输入姓名“Guru99“
  4. 单击确定

使用 Visual C# 控制台应用程序新建项目对话框,项目名称为 Guru99

步骤3) 项目成功创建后将显示以下屏幕。

Visual Studio 编辑器显示了新创建的内容 Guru99 控制台项目

使用以下方式设置 Visual Studio Selenium WebDriver:

步骤1) 导航至工具 -> NuGet 包管理器 -> 管理 NuGet 解决方案包

工具菜单路径到 NuGet 包管理器和管理 NuGet 解决方案包

步骤2) 在下一个屏幕中

  1. 寻找 Selenium 在结果屏幕上
  2. 选择第一个搜索结果
  3. 勾选项目复选框
  4. 点击“安装”

NuGet 带有包管理器的 Selenium 搜索结果和项目复选框已勾选

步骤3) 在弹出的屏幕中点击“确定”按钮

NuGet 在确认弹出窗口之前 Selenium 软件包已安装

步骤4) 一旦包成功安装,将显示以下消息。

NuGet 输出确认 Selenium WebDriver 已成功安装

Selenium 现在可以打开浏览器,但还不能报告测试是否通过。这需要单元测试框架来完成。

NUnit 框架:概述

NUnit 是 单元测试 Visual Studio 支持的框架和 Selenium WebDriver。NUnit 是 .NET 应用程序中最广泛使用的单元测试框架。NUnit 以易于阅读的格式呈现测试结果,并允许测试人员调试自动化测试。

我们需要在 Visual Studio 中安装 NUnit 框架和 NUnit 测试适配器才能使用它。

安装 NUnit 框架的步骤

现在在这个 Selenium 通过 C# 教程,让我们了解安装 NUnit 框架的过程:

步骤1) 导航至工具 -> NuGet 包管理器 -> 管理 NuGet 解决方案包

工具菜单在 N 处重新打开uGet NUnit 安装的包管理器

步骤2) 在下一个窗口中

  1. 搜索 NUnit
  2. 选择搜索结果
  3. 选择项目
  4. 单击安装

NuGet 软件包管理器,已选择 NUnit 搜索结果进行安装

步骤3) 会出现下面的弹出窗口。单击“确定”按钮。

NuGet 安装 NUnit 框架之前会弹出确认提示框。

步骤4) 安装完成后将出现以下消息。

NuGet 消息确认 NUnit 框架安装完成

下载 NUnit 测试适配器的步骤

现在,在本 NUnit 教程中,我们将介绍下载 NUnit 测试适配器的步骤:

请注意,以下步骤仅适用于 32 位机器。对于 64 位机器,您需要按照下面提到的相同过程下载“NUnit3 测试适配器”。

当前软件包: 现代项目安装 NUnit3TestAdapter 连同 Microsoft.NET.Test.Sdk以及年长的 NUnitTestAdapter 该软件包已停止维护。在 .NET (Core) 中,整个项目可以使用脚手架搭建。 dotnet new nunit它会为您添加所有三个套餐。

步骤1) 导航至工具 ->NuGet 包管理器 -> 管理 NuGet 解决方案包。在该屏幕中,

  1. 搜索 NUnitTestAdapter
  2. 点击搜索结果
  3. 选择项目
  4. 单击安装

NuGet 包管理器正在选择项目中的 NUnitTestAdapter。

步骤2) 在确认弹出窗口中单击“确定”。安装完成后,您将看到以下消息:

NuGet 消息确认 NUnit 测试适配器安装完成

两部分都已安装完毕,下一步是将它们合并到一个测试类中。

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) 将出现班级创建窗口。

  1. 为班级提供名称
  2. 点击添加按钮

“添加新项”对话框用于命名新的 NUnit 测试类

步骤3) 将出现以下屏幕。

在 Visual Studio 编辑器中创建的空 C# 类文件

步骤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) 点击“构建”->“构建解决方案”

Visual Studio 中已选择“生成解决方案”菜单。

注意: 构建时,你可能会收到类似“不包含适合入口点的静态‘main’方法”的错误

构建错误报告:没有适合作为入口点的静态 main 方法

要解决此问题,请转到“项目”>“属性”,并将“输出类型”更改为“类库”。默认值为“控制台应用程序”。

项目属性的输出类型已切换为类库

步骤5) 构建成功后,我们需要打开测试资源管理器窗口。单击测试 -> Windows -> 测试资源管理器

测试菜单路径 Windows 和测试浏览器

步骤6) 测试资源管理器窗口打开,其中列出了可用的测试。右键单击测试资源管理器并选择运行选定的测试

测试资源管理器列出了可用的测试,并提供了“运行选定测试”选项。

步骤7) Selenium 必须使用指定方式打开浏览器。 URL 然后关闭浏览器。测试用例状态将在测试资源管理器窗口中更改为“通过”。

测试资源管理器显示 NUnit 测试结果标记为通过

通过测试证明管道系统运行正常。接下来是你在实际编写测试题时会用到的词汇。

Selenium C# 中的 WebDriver 命令

C# 使用接口“IWebDriver”与浏览器交互。以下是可用的命令类别 Selenium 在 C# 中。

  1. 浏览器命令
  2. Web 元素命令
  3. 下拉命令

现在在这个 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 定位器单击链接:

测试场景:

  1. 导航至演示 Guru99 网页 – https://demo.guru99.com/test/guru99home/
  2. 最大化窗口
  3. 点击“测试”菜单
  4. 关闭浏览器
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 定位器单击按钮:

测试场景:

  1. 导航到 Guru99 演示页面 – https://demo.guru99.com/test/guru99home/
  2. 在电子邮件文本框中输入数据
  3. 点击注册按钮
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 定位器单击按钮:

测试场景:

  1. 导航到 Guru99 演示页面 – https://demo.guru99.com/test/guru99home/
  2. 在电子邮件文本框中输入数据
  3. 点击注册按钮
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:在下拉列表中选择一个值:

测试场景:

  1. 导航到 Guru99 演示页面 – https://demo.guru99.com/test/guru99home/
  2. 点击 SAP 链接
  3. 在姓名和电子邮件文本框中输入数据
  4. 从课程下拉菜单中选择一个值
  5. 关闭浏览器
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");
                        
        }
    }
}

常见问题

绝大部分储备使用 Selenium.WebDriver 4.x,搭配 NUnit 3.14 或 NUnit 4,以及 NUnit3TestAdapter 和 Microsoft.NET.Test.Sdk.NUnit 4 的目标框架为 .NET Framework 4.6.2 或 .NET 6 及更高版本,因此在从上面显示的包升级之前,请检查您的项目目标。

序号 Selenium 4.6年推出 Selenium 管理器会在运行时下载并匹配浏览器驱动程序。将驱动程序文件夹传递给 ChromeDriver 构造函数仍然有效,但只有在必须指定特定驱动程序版本时才需要这样做。

隐式等待会在 IWebDriver 实例的整个生命周期内对每次元素查找应用一个超时。显式等待则针对单个元素和一个条件(例如可点击或可见),因此它失败得更快,并且能更精确地描述意图。

是的。将程序集标记为可并行化,NUnit 就会并发运行测试用例。每个测试都必须拥有自己的 IWebDriver 实例,因此请在 SetUp 中创建驱动程序,而不是共享静态字段,否则并行测试会在同一个浏览器上发生冲突。

NUnit 和 MSTest 都使用属性,并通过 TestFixture 或 TestClass 对测试进行分组。xUnit 不需要类属性,并且是围绕并行性设计的。这三者都可以在 Test Explorer 中运行;NUnit 仍然是最常用的选择。 Selenium 用 C# 编写。

AI 工具会根据页面快照提出定位器建议,修复 UI 更改后失效的选择器,并将编写的测试用例转换为 NUnit 方法草稿。请将每个建议都视为草稿,并在提交之前仔细检查其断言。

是的。根据对场景的描述,Copilot 会生成 SetUp、Test 和 TearDown 成员,并建议从周围代码中调用 FindElement。请对照实际页面验证定位器,因为生成的选择器是推断出来的,而不是检查出来的。

Selenium Playwright 拥有最广泛的网格、云和语言支持,以及庞大的现有测试环境,因此这项技能仍然具有很强的就业竞争力。Playwright 提供更快的执行速度和内置的等待功能。许多 .NET 团队同时运行这两个工具,共享同一个 NUnit 运行器和报告。

总结一下这篇文章: