Selenium C#WebDriver教程:NUnit示例

Selenium概述:

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

C#是一种派生自C++和Java的面向对象编程语言。C#允许以下是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”包含到我们的程序中。要使用的命名空间取决于程序要求。
  • 第二个语句为类“DemoPrint”声明一个名称空间“FirstProgram”。一个C#文件可以在同一命名空间中包含多个类。
  • 第三个语句包括类声明。一个类可以包含多个属性和多个方法。
  • 第四个语句包括Main方法的声明。Main方法是每个类的执行入口点。
  • 最后一条语句是用于将语句打印到控制台的C#语法。WriteLine是类控制台的一个方法。

使用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 2017选项卡上显示的“免费下载”按钮

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

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

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

步骤4)在下一屏幕中,

选中以下项的复选框

  • 通用Windows平台开发
  • NET桌面开发

点击“安装”。

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

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

步骤6)重启机器后,在开始菜单中搜索“Visual Studio 2017”,然后点击搜索结果。如果没有现有帐户,单击“现在不用,可能以后再用”链接。

步骤7)在下一屏幕中,

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

步骤8)将出现Visual Studio‘入门’屏幕。

在Visual Studio中创建新项目:

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

步骤2)在下一屏幕中,

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

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

使用Selenium WebDriver设置Visual Studio:

步骤1)导航到Tools->NuGet Package Manager->Manage NuGet Packages for Solution

步骤2)在下一个屏幕中

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

步骤3)在弹出屏幕中点击‘OK’(确定)按钮

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

NUnit框架:概述

NUnit是Visual Studio和Selenium WebDriver支持的单元测试框架。NUnit是mo NUnit,以可读格式呈现测试结果,并允许测试员调试自动测试。

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

安装NUnit Framework的步骤:

现在,在使用C#的Selenium教程中,让我们学习安装NUnit框架的过程:

1. 导航到Tools->NuGet Package Manager->Manage NuGet Packages for Solution

步骤2)在下一个窗口中

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

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

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

下载NUnit测试适配器的步骤

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

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

步骤1)导航到Tools->NuGet Package Manager->Manage NuGet Packages for Solution。在该屏幕中,

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

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

Selenium和NUnit框架:

Selenium与NUnit框架的集成允许测试人员区分不同的测试类。NUnit还允许测试人员在运行测试之前和之后使用诸如Setup、Test和tearDown等注释来执行操作。

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

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

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

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

步骤2)弹出类创建窗口。

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

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

步骤4)将以下代码添加到创建的类中。注意,需要在Chrome驱动程序初始化期间指定‘chromdriver.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)点击‘Build’->‘Build Solution’

注意:在生成以下代码时,可能会出现类似“不包含适合入口点的静态‘Main’方法”的错误

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

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

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

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

C#中的Selenium WebDriver命令:

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

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

现在,在Selenium C Sharp教程中,让我们逐个学习Selenium WebDriver命令

浏览器命令:

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

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

Webelement命令:

Webelement表示网页上的所有元素。Firebug和Firepath等工具可用于识别Webelement的XPath。

以下是C#中可用的Webelement命令列表。

命令名称 描述 语法
Click 此命令用于单击Webelement。对于要单击的元素,此命令还用于复选框和单选按钮操作。 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元素的可见性。 IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); Boolean status = element.Displayed;
Enabled 此命令用于标识网页上是否启用了特定的Web元素。结果是对或错。 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 此命令类似于单击命令,不同之处在于HTML表单是否包含类型为Submit的按钮。当单击命令单击任何按钮时,提交命令只单击类型为Submit的按钮。 IWebelement element = driver.FindElement(By.xpath(“xpath of Webelement”)); element.submit();
Text 此命令返回Webelement的内部文本。此命令返回一个字符串值作为结果。 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 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 此命令用于识别下拉菜单是否为多选下拉菜单;多选DRO此命令返回布尔值。 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();
DeSelectByInde 此命令使用其索引取消选择已选择的值。 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 Locator单击链接:

测试场景:

  1. 导航到Demo
  2. 最大化窗口
  3. 单击“Testing”(测试)菜单
  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 = "http://www.itxiaonv.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. 导航至guru99
  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 = "http://www.itxiaonv.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("This email address is being protected from spambots. You need JavaScript enabled to view it.");
        signUpButton.Click();
    }
}
}

示例3:使用CSS定位器将数据输入文本框并单击按钮:

测试场景:

  1. 导航至guru99
  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 = "http://www.itxiaonv.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("This email address is being protected from spambots. You need JavaScript enabled to view it.");
        signUpButton.Click();
    }
}
}

示例4:在下拉列表中选择一个值:

测试场景:

  1. 导航至guru99
  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 = "http://www.itxiaonv.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");
    }
}
}

总结:

  • 为了在C#中使用Selenium WebDriver,需要安装Visual Studio。
  • NUnit是Visual Studio和Selenium Webdriver支持的单元测试框架
  • 我们需要在Visual Studio上安装NUnit框架和NUnit测试适配器才能使用它。
  • 通过创建NUnit测试类并使用NUnit框架运行测试类,可以将NUnit框架与Selenium集成。
  • NUnit还允许测试人员在运行测试之前和之后使用诸如Setup、Test和tearDown等注释来执行操作。
  • Selenium WebDriver命令可以分为浏览器命令、Webelement命令和下拉命令。

IT赶路人

专注IT知识分享