Selenium C# NUnit 示例教程

Selenium 概述

Selenium 是一个开源的 Web 自动化测试工具,支持多种浏览器和多种操作系统。它允许测试人员使用多种编程语言,如 Java、C#、Python、.Net、Ruby、PHP 和 Perl 来编写自动化测试。

C# 概述

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

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

C# 的基本语法

C# 程序需要包含以下部分

  1. 命名空间声明
  2. 类属性和方法
  3. 主方法
  4. 程序语句

示例-

以下是一个示例 Selenium C# 程序,用于在系统控制台上打印文本“Guru99”。

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”类的一个方法。

Selenium 与 C# 设置

如何使用 Selenium WebDriver 设置 Visual Studio

现在,在这个 Selenium C# 教程中,让我们学习使用 Selenium WebDriver 设置 Visual Studio 的分步过程

Visual Studio 是一个集成开发环境 (IDE),开发人员使用它来构建跨多个平台(例如 Windows、Android、iOS 和基于云的应用程序)的应用程序。

步骤 1) 导航到 URL

https://visualstudio.microsoft.com/downloads/ 并单击 Visual Studio Community 选项卡上显示的“免费下载”按钮

Set Up Visual Studio With Selenium WebDriver

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

Set Up Visual Studio With Selenium WebDriver

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

Set Up Visual Studio With Selenium WebDrive

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

Set Up Visual Studio With Selenium WebDrive

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

选择以下复选框

  • 通用 Windows 平台开发
  • .Net 桌面开发

单击“安装”。

Set Up Visual Studio With Selenium WebDrive

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

Set Up Visual Studio With Selenium WebDrive

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

Set Up Visual Studio With Selenium WebDrive

步骤 6) 机器重启后,在开始菜单中搜索“Visual Studio”并单击搜索结果。将出现以下弹出窗口。如果您没有现有帐户,请单击“现在不,也许稍后”链接。

Set Up Visual Studio With Selenium WebDrive

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

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

Set Up Visual Studio With Selenium WebDrive

步骤 8) 将出现 Visual Studio“入门”屏幕。

Set Up Visual Studio With Selenium WebDrive

在 Visual Studio 中创建一个新项目

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

Create A New Project In Visual Studio

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

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

Create A New Project In Visual Studio

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

Create A New Project In Visual Studio

使用 Selenium WebDriver 设置 Visual Studio

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

Set Up Visual Studio With Selenium WebDriver

步骤 2) 在下一个屏幕上

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

Set Up Visual Studio With Selenium WebDriver

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

Set Up Visual Studio With Selenium WebDriver

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

Set Up Visual Studio With Selenium WebDriver

NUnit 框架:概述

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

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

安装 NUnit 框架的步骤

现在在这个 Selenium with C# 教程中,让我们学习安装 NUnit 框架的过程

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

Install NUnit Framework

步骤 2) 在下一个窗口中

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

Install NUnit Framework

步骤 3) 将出现以下弹出窗口。单击“确定”按钮。

Install NUnit Framework

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

Install NUnit Framework

下载 NUnit 测试适配器的步骤

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

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

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

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

Download NUnit Test Adapter

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

Download NUnit Test Adapter

Selenium 和 NUnit 框架

Selenium 与 NUnit 框架的集成允许测试人员区分各种测试类。NUnit 还允许测试人员使用 SetUp、Test 和 TearDown 等注解在运行测试之前和之后执行操作。

NUnit 框架可以通过创建 NUnit 测试类并使用 NUnit 框架运行测试类来与 Selenium 集成。

此 Selenium C# 框架教程中的以下步骤是使用 NUnit 框架创建和运行测试类所需的。

在 Selenium 中创建 NUnit 测试类的步骤

步骤 1) 在解决方案资源管理器中,右键单击项目 > 添加 > 类

Create A NUnit Test Class In Selenium

步骤 2) 将出现类创建窗口。

  1. 为类提供一个名称
  2. 单击添加按钮

Create A NUnit Test Class In Selenium

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

Create A NUnit Test Class In Selenium

步骤 4) 将以下代码添加到创建的类中。请注意,在 Chrome 驱动程序初始化期间,您需要指定“chromedriver.exe”文件的位置。

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

Create A NUnit Test Class In Selenium

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

Create A NUnit Test Class In Selenium

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

Create A NUnit Test Class In Selenium

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

Create A NUnit Test Class In Selenium

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

Create A NUnit Test Class In Selenium

步骤 7) Selenium 必须打开带有指定 URL 的浏览器并关闭浏览器。测试用例状态将在测试资源管理器窗口上更改为“通过”。

Create A NUnit Test Class In Selenium

C# 中的 Selenium WebDriver 命令

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

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

现在在 Selenium C# 教程中,让我们逐一研究 Selenium WebDriver 命令

浏览器命令

以下是 C# 中 Selenium 可用的浏览器命令列表。

命令名称 描述 语法
Url 命令 此命令用于在浏览器中打开指定的 URL。
driver.Url = "https://guru99.com.cn"
Title 命令 此命令用于检索当前打开网页的页面标题
String title = driver.Title
PageSource 命令 此命令用于检索当前打开网页的源代码。
String pageSource = driver.PageSource
Close 命令 此命令用于关闭最近打开的浏览器实例。
driver.Close();
Quit 命令 此命令用于关闭所有打开的浏览器实例
driver.Quit();
Back 命令 此命令用于导航到浏览器历史记录的上一页。
driver.Navigate().Back();
Forward 命令 此命令用于导航到浏览器历史记录的下一页。
driver.Navigate().Forward()
Refresh 命令 此命令用于执行浏览器刷新。
driver.Navigate().Refresh()

Web 元素命令

Web 元素代表网页上的所有元素。它们由 HTML 标签表示。按钮、文本框、链接、图像、表格和框架都属于 Web 元素。Web 元素上的操作可以使用 IWebelement 接口触发。要与 Web 元素交互,我们需要在网页上找到该元素,然后对其执行操作。Firebug 和 Firepath 等工具可用于识别 Web 元素的XPath

以下是 C# 中可用的 Web 元素命令列表。

命令名称 描述 语法
Click 命令 此命令用于单击 Web 元素。为了使元素可点击,该元素必须在网页上可见。此命令也用于复选框和单选按钮操作。
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));  element.Click();
Clear 命令 此命令专门用于清除文本框中的现有内容。
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
element.Clear();
SendKeys 命令 此命令用于向文本框输入值。要输入的值必须作为参数传递给
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
element.SendKeys("guru99");
Displayed 命令 此命令用于识别特定元素是否显示在网页上。此命令返回一个布尔值;根据 Web 元素的可见性,为 true 或 false。
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
Boolean status = element.Displayed;
Enabled 命令 此命令用于识别特定 Web 元素是否在网页上启用。此命令返回一个布尔值;结果为 true 或 false。
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
Boolean status = element.Enabled;
Selected 命令 此命令用于识别特定 Web 元素是否已选中。此命令用于复选框、单选按钮和选择操作。
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
Boolean status = element.Selected;
Submit 命令 此命令与 click 命令类似,区别在于 HTML 表单是否有一个类型为 Submit 的按钮。虽然 click 命令单击任何按钮,但 submit 命令仅单击类型为 submit 的按钮。
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));  element.submit();
Text 命令 此命令返回 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)

下拉命令

C# 中的下拉操作可以通过 SelectElement 类实现。

以下是 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");
Options 命令 此命令用于检索下拉列表中显示的所有选项的列表。
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");

代码示例

示例 1:使用 XPATH 定位器单击链接

测试场景

  1. 导航到 Demo 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:使用 XPATH 定位器在文本框中输入数据并单击按钮

测试场景

  1. 导航到 Guru 99 演示页面 – 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:使用 CSS 定位器在文本框中输入数据并单击按钮

测试场景

  1. 导航到 Guru 99 演示页面 – 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. 导航到 Guru 99 演示页面 – 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 与 C# 一起使用,您需要安装 Visual Studio。
  • NUnit 是 Visual Studio 和 Selenium WebDriver 支持的单元测试框架
  • 我们需要在 Visual Studio 中安装 NUnit 框架和 NUnit 测试适配器才能使用它。
  • NUnit 框架可以通过创建 NUnit 测试类并使用 NUnit 框架运行测试类来与 Selenium 集成。
  • NUnit 还允许测试人员使用 SetUp、Test 和 TearDown 等注解在运行测试之前和之后执行操作。
  • Selenium WebDriver 命令可分为浏览器命令、Web 元素命令和下拉命令。