📜  Selenium 与 C#教程

📅  最后修改于: 2020-11-06 05:01:20             🧑  作者: Mango

selenium与C#教程

在本节中,我们将学习如何在Visual Studio和NUnit Framework的帮助下以C#编程语言创建Selenium测试脚本。

在本教程中,我们将学习以下主题:

  • 解释selenium?
  • 什么是C#?
  • 为什么C#对自动化测试有用?
  • selenium与C#
  • 在C#中使用Visual Studio配置Selenium
  • 在Visual Studio中使用NUnit配置Selenium

解释selenium?

Selenium是最重要的自动化测试工具之一,因为它支持Java, Python,C#,Ruby,Perl和PHP等多种编程语言。

并在各种操作系统(例如Windows,Mac,Linux)上的各种浏览器(例如Google Chrome,Firefox,Safari,Internet Explorer和Opera)中自动化测试脚本。

Selenium支持其他测试工具(例如TestNG和JUnit)来管理测试用例并生成测试报告。

有关selenium的更多详细信息,请参见以下链接:

https://www.javatpoint.com/selenium-tutorial

什么是C#?

C#是一种面向对象的编程语言,它在.Net框架上运行,并且发音为C-sharp。

开发C#语言来运行CLR,CLR代表“公共语言运行时”。

在C#中,我们可以借助函数将程序分解为多个部分。这就是为什么它也被称为结构化编程语言。

有关C#语言的更多详细信息,请参见以下链接:

https://www.javatpoint.com/c-sharp-tutorial

为什么C#对自动化测试有用?

  • C#对自动化测试很有用,因为它允许自动化测试工程师借助.Net框架上的Visual Studio开发应用程序。
  • C#是另一种编程语言,它也支持与Selenium的绑定。
  • 并且此语言绑定将与java程序一起更新。
  • C#IDE是Visual Studio ,与Java的Eclipse相比,它提供了更快的开发和调试体验。
  • C#具有许多内置函数,可加快开发速度。

selenium与C#

在本节中,我们将了解如何下载,安装Visual Studio以及如何使用Visual Studio,NUnit Framework配置Selenium以及如何使用C#编程语言在Visual Studio中执行测试脚本。

要将selenium与C#结合使用,请执行以下过程:

  • 在C#中使用Visual Studio配置Selenium
  • 在Visual Studio中使用NUnit配置Selenium

在C#中使用Visual Studio配置Selenium

以下是在C#中使用Visual Studio配置Selenium的过程:

  • 下载并安装C#IDE(Visual Studio)
  • 在Visual Studio中创建一个新项目
  • 在Visual Studio中添加引用
  • 使用C#编写Selenium测试脚本
  • 在Visual Studio中运行Selenium测试脚本

下载并安装Visual Studio

Visual Studio是C#IDE [集成开发环境],用于在Windows,Mac等各种平台上开发应用程序。

在这里,我们正在下载并安装Visual Studio for Windows平台。

下载Visual Studio

要下载最新版本的Visual Studio for Windows平台,请参考以下链接:https://visualStudio.microsoft.com/downloads/

  • 单击上面的链接后,在“下载”部分中,我们将单击“社区”区域下的“免费下载”按钮,如下面的屏幕截图所示:

  • 单击“免费下载”按钮后,它将下载visual Studio的exe文件。
  • 然后,打开下载的exe文件,如下面的屏幕截图所示:

安装Visual Studio

下载适用于Windows的Visual Studio平台后,我们将准备安装它。

要安装Visual Studio,请执行以下过程:

  • 双击下载的可执行文件后, Visual Studio Installer窗口将出现在屏幕上,在其中单击“继续”按钮以进行进一步的处理,如下面的屏幕快照所示:

  • 单击继续按钮后,它将开始为Visual Studio安装文件。

  • 完成此过程后,将在屏幕上显示“安装-visual Studio-community 2019-16.4.3”窗口,我们在“桌面和移动”部分下选择“通用Windows平台”开发.Net桌面开发选项。
  • 然后单击“安装”按钮,如下面的屏幕截图所示:

  • 由于文件大小很大,因此安装过程将花费一些时间,如下面的屏幕截图所示:

  • 安装过程完成后,我们将在启动Visual Studio之前单击“重新启动”按钮。

  • 重新启动(重新启动)系统后,我们将在“开始”菜单上搜索“ Visual Studio 2019”,然后双击它。
  • 屏幕上将显示以下弹出窗口,我们将单击Not Now,如果没有帐户,则可能会稍后单击,如下面的屏幕截图所示:

  • 在下一个窗口中,我们可以选择Visual Studio的主题。
  • 选择Visual Studio的主题后,单击“启动Visual Studio”按钮,如下图所示:

  • 我们得到了Visual Studio的“入门”窗口。

创建一个新项目

安装完成后,我们准备在Visual Studio上创建一个新项目。

要在Visual Studio上创建一个项目,请执行以下过程:

  • 右键单击“文件”菜单,转到“新建”,然后在给定的弹出菜单中选择“项目”选项,如下面的屏幕快照所示:

  • 屏幕上将出现“创建新项目”窗口,在“所有语言”下拉菜单中选择C#语言。
  • 然后,从“所有平台”下拉列表中选择Windows平台选项。
  • 然后在搜索字段中搜索.net Framework模板,然后从中选择Console App(.NET Framework)
  • 之后,单击下一步按钮,如下面的屏幕截图所示:

  • 一旦单击了下一个按钮,“配置您的新项目”窗口将出现在屏幕上,我们将在其中提供我们的项目名称[SeleniumTest],然后单击“创建”按钮,如下图所示:

  • 成功创建项目后,以下窗口将出现在屏幕上:

在Visual Studio中添加引用

项目创建完成后,我们将在Visual Studio中借助NuGet软件包管理器添加Selenium WebDriver和Chrome驱动程序的引用。

添加Selenium WebDriver参考

请按照以下过程,在Visual Studio中添加Selenium WebDriver的引用:

  • 解决方案资源管理器中,右键单击“引用” ,然后在给定的弹出菜单中选择“管理NuGet软件包”选项,如下面的屏幕快照所示:

  • 将打开“管理NuGet软件包”窗口,我们将在其中搜索Selenium并选择WebDriver ,然后单击“安装”按钮,如下图所示:

  • 然后,在预览更改窗口中单击确定按钮,如下图所示:

  • 成功安装软件包后,它将显示以下输出消息。

添加Chrome驱动程序参考

请按照以下过程在Visual Studio中添加对Chrome驱动程序的引用:

  • 要在chrome浏览器上执行操作,我们将再次右键单击References,然后从弹出菜单中选择Manage NuGet Packages选项。
  • 然后在搜索字段中搜索chrome驱动程序,然后选择Chrome.WebDriver并单击“安装”按钮,如下图所示:

  • 并且,单击“预览更改”窗口中的“确定”按钮以进行进一步处理。

  • 在Visual Studio中添加Selenium WebDriver和Chrome驱动程序引用后,我们准备使用C#编程语言编写测试脚本。

使用C#编写Selenium测试脚本

要使用C#编程语言编写Selenium测试脚本,请执行以下步骤:

Steps Actions Input Expected Result
1. Create reference for the browser The reference for the browser should be created.
2. Navigate to the Google home page. https://www.google.com/ The Google home page must be displayed.
3. Identify the Google search text box and pass the value. Javatpoint tutorials The Google search box should be identified, and the value should be entered.
4. Identify and Click on the Google search button. The Google search button should be identified, and clicked.
5. Close the Browser. The Browser should be closed.

我们将逐步创建测试脚本,以使您详细了解每个组件。

步骤1

要为浏览器创建参考,我们将遵循以下过程:

注意:要声明接口:在接口名称之前添加前缀“ I”。就像在下表中可以看到的那样,在C#中,我们在接口(IWebDriver)之前放置“ I”,而在Java中,则不需要在接口(WebDriver)名称之前放置“ I”。

C# Java
IWebDriver WebDriver
IWebElement WebElement

这里是示例代码:

IWebDriver driver = new ChromeDriver();
  • 在编写以上代码时,我们遇到以下错误:

  • 为克服此错误,我们将使用以下语句,这有助于我们添加Selenium参考。
using OpenQA.Selenium;
  • 在添加chrome驱动程序的引用时,将出现以下错误:

  • 为了解决此错误,我们将在代码中使用以下语句。
using OpenQA.Selenium.Chrome;

第2步

在此步骤中,我们将在浏览器中浏览https://www.google.com/ URL。

并且示例代码如下:

driver.Navigate().GoToUrl("https://www.google.com/");

注意:GoToUrl()方法用于浏览URL。

第三步

要识别Google搜索框,请执行以下过程:

在此步骤中,我们试图借助其“名称”属性找到Google搜索文本框。

  • 右键单击Google搜索文本框,然后在弹出菜单中选择“检查”选项,如下图所示:selenium与C#教程
  • 将启动开发人员工具窗口,其中包含开发Google搜索文本框时使用的所有特定代码,我们将在其中复制其Name属性的值“ q ”。selenium与C#教程
  • 并且示例代码如下:
IWebElement ele = driver.FindElement(By.Name("q"));

第四步

在此步骤中,我们将值传递到Google搜索框中。

这里是示例代码:

ele.SendKeys("javatpoint tutorials");

步骤5

要确定Google搜索按钮,请执行以下过程:

  • 右键单击Google搜索按钮,然后从给定的弹出菜单中选择“检查”选项,如下图所示:

  • 将启动开发人员工具窗口,其中包含在开发Google搜索按钮时使用的所有特定代码。
  • 然后,复制其名称属性的值“ btnK ”,如下图所示:

  • 并且,示例代码如下:
IWebElement ele1 = driver.FindElement(By.Name("btnK"));
//click on the search button
ele1.Click();

步骤6

在最后一步,我们将在浏览器上执行的所有操作完成后关闭浏览器。

这里是示例代码:

driver.Close();

完成所有测试方案后,我们的最终测试脚本将如下所示。

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace SeleniumTest
{
class Program
{
static void Main(string[] args)
{
Console.Write("test case started ");
//create the reference for the browser
IWebDriver driver = new ChromeDriver();
// navigate to URL
driver.Navigate().GoToUrl("https://www.google.com/");
Thread.Sleep(2000);
// identify the Google search text box
IWebElement ele = driver.FindElement(By.Name("q"));
//enter the value in the google search text box
ele.SendKeys("javatpoint tutorials");
Thread.Sleep(2000);
//identify the google search button
IWebElement ele1 = driver.FindElement(By.Name("btnK"));
// click on the Google search button
ele1.Click();
Thread.Sleep(3000);
//close the browser
driver.Close();
Console.Write("test case ended ");
}
}
}

运行测试脚本

编写完Selenium测试脚本后,我们将运行测试脚本。

请按照以下过程运行测试脚本:

  • 单击开始按钮以执行Program cs文件,如下图所示:

  • 单击开始按钮后,将开始执行过程,如下图所示:

  • 上面的测试脚本将启动Google Chrome浏览器并自动执行所有测试方案。

在Visual Studio中使用NUnit配置Selenium

在NUnit的帮助下编写测试脚本之前,我们将了解NUnit框架,在Visual Studio中下载并安装NUnit框架。

  • 什么是NUnit Framework?
  • 下载NUnit3测试适配器
  • 为NUnit添加引用
  • 创建一个NUnit类
  • 使用NUnit编写Selenium测试脚本
  • 执行测试脚本

什么是NUnit Framework?

NUnit是适用于所有.Net语言的单元测试框架。它是开源软件,并且经过重新设计以充分利用.Net语言的许多新功能。

它还支持广泛的.Net语言平台。

下载NUnit3测试适配器

NUnit3测试适配器是一个扩展,允许我们在Visual Studio中运行NUnit测试。

要在Visual Studio中下载NUnit3测试适配器,请执行以下步骤:

  • 首先,转到扩展,然后在Visual Studio中选择“管理扩展”选项。

  • 屏幕上将显示Manage Extensions窗口,我们将在其中搜索NUnit,然后单击NUnit 3 Test Adapter的Download按钮,如下面的屏幕截图所示:

  • 单击下载按钮后,它将要求我们关闭Visual Studio来修改更改,然后单击“修改”按钮,如下面的屏幕快照所示:

  • 单击“修改”按钮后,它将开始安装和修改NUnit 3测试适配器。
  • 完成所有修改后,我们得到以下窗口:

  • 正如我们在“管理扩展”窗口中看到的那样,已成功安装NUnit 3测试适配器。

  • 完成NUnit 3测试适配器的安装过程后,我们将添加NUnit的引用。

为NUnit添加引用

要添加NUnit的引用,请执行以下过程:

  • 右键单击“解决方案资源管理器”中的“引用” ,然后在给定的弹出菜单中选择“管理NuGet软件包”选项。

  • 在“管理NuGet软件包”窗口中,我们将在搜索字段中搜索NUnit ,然后选择第一个选项作为NUnit,然后单击“安装”按钮,如下面的屏幕截图所示:

  • 单击“安装”按钮后,单击“确定”的屏幕上将显示“预览更改”窗口。

  • 成功安装软件包后,我们将获得以下输出消息。

创建NUnit类

要在Visual Studio中创建NUnit类,请执行以下过程:

  • 右键单击SeleniumTest项目,然后转到“添加” ,然后从给定的弹出菜单中选择“类”选项。

  • 屏幕上将出现Add New Item窗口,我们将提供类名称Sample1,然后单击Add按钮,如下面的屏幕截图所示:

  • 单击添加按钮后,以下窗口将出现在屏幕上:

  • 成功创建类后,我们准备使用NUnit编写测试脚本。

使用NUnit编写Selenium测试脚本

要使用NUnit编写Selenium测试脚本,请遵循以下过程:

出于测试目的,我们将在Facebook应用程序上执行登录操作。

Steps Actions Input Expected Result
1. Open the Google Chrome browser. The Google Chrome browser should be opened.
2. Navigate to the Facebook login page. https://www.facebook.com The Facebook login page must be displayed.
3. Identify the username text box and pass the value. Username=xyz11@gmail.com The username text box should be identified, and the value should be entered.
4. Identify the password text box and pass the value. Password=####### The Password text box should be identified, and the value should be entered.
5. Identify the Log in button and click it. The Login button should be identified and clicked.
6. Close the browser. The browser should be closed.

我们将逐步创建测试脚本,以使您完全了解如何借助Visual Studio中的NUnit框架编写测试脚本。

步骤1

要访问Google Chrome浏览器,我们将IWebDriver创建为全局变量。

这里是示例代码:

//create the reference for the browser
 IWebDriver driver = new ChromeDriver();

注意:全局变量:全局变量是在程序中所有函数均可访问的任何函数之外声明的。

在NUnit测试方法的帮助下,使用NUnit编写代码时,我们会将代码分为不同的部分:

  • 对于打开浏览器:初始化
  • 执行浏览器操作:ExecuteTest
  • 关闭浏览器:EndTest
The syntax for the NUnit test method:
public void MethodName()

例:

public void Initialize()
{
//open the browser
}
public void ExecuteTest()
{
//perform browser operations
}
public void EndTest()
{
//close the browser
}

第2步

在下一步中,我们将在Initialize()方法下导航到给定的URL。

这里是示例代码:

public void Initialize()
{
//navigate to URL
driver.Navigate().GoToUrl("https://www.facebook.com/");
//Maximize the browser window
driver.Manage().Window.Maximize();
Thread.Sleep(2000);
}

第三步

在此步骤中,我们将在ExecuteTest()方法下标识Facebook登录页面的用户名文本框。

请遵循以下过程:

  • 右键单击用户名文本框,然后单击检查元素,如下面的屏幕截图所示:

  • 将打开包含所有特定代码的开发人员工具窗口,这些代码将在用户名文本框的开发中使用。

  • 将其id属性的值复制为“ email ”,并将其粘贴到代码中。

这里是示例代码:

public void ExecuteTest()
{
//identify the username text box
IWebElement ele = driver.FindElement(By.Id("email"));
//enter the username value
ele.SendKeys("xyz11@gmail.com");
Thread.Sleep(2000);
Console.Write("username value is entered \n");

第四步

之后,我们将识别Facebook登录页面的密码文本框,因此请执行以下过程:

  • 右键单击密码文本框,然后在弹出菜单中单击“检查元素”选项,如下图所示:

  • 它将启动一个包含所有特定代码的开发人员工具窗口,这些代码在开发密码文本框时使用。

  • 将其name属性的值复制为“ pass ”并将其粘贴到代码中。

这里是示例代码:

//identify the password text box
IWebElement ele1 = driver.FindElement(By.Name("pass"));
//enter the password value
ele1.SendKeys("########");
Console.Write("password is entered");

步骤5

一旦确定了用户名或密码文本框,我们将找到“登录”按钮并执行单击操作。

  • 右键单击“登录”按钮,然后从给定的弹出菜单中选择“检查”选项,如下图所示:

  • 带有所有特定代码的开发人员工具窗口将启动,在登录按钮的开发中将使用这些特定代码,如下面的屏幕截图所示:

  • 复制其Id属性“ u_0_b ”的值并将其粘贴到代码中。

这里是示例代码:

//click on the Log in button
IWebElement ele2 = driver.FindElement(By.Id("u_0_b"));
ele2.Click();
Thread.Sleep(3000);
Console.Write("login button is clicked")

步骤7

在测试脚本的最后一步,我们将在EndTest()方法下关闭浏览器。

下面是关闭浏览器的示例代码:

public void EndTest()
{
//close the browser
driver.Close();    
}

将所有步骤组合在一起后,我们的脚本将如下所示:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace SeleniumTest
{
class Sample1
{
//create the reference for the browser
IWebDriver driver = new ChromeDriver();
public void Initialize()
{
//navigate to URL
driver.Navigate().GoToUrl("https://www.facebook.com/");
//Maximize the browser window
driver.Manage().Window.Maximize();
Thread.Sleep(2000);
}
public void ExecuteTest()
{
//identify the username text box
IWebElement ele = driver.FindElement(By.Id("email"));
//enter the username value
ele.SendKeys("xyz11@gmail.com");
Thread.Sleep(2000);
Console.Write("username value is entered");          
//identify the password text box
IWebElement ele1 = driver.FindElement(By.Name("pass"));
//enter the password value
ele1.SendKeys("########");
Console.Write("password is entered");     
//click on the Login button
IWebElement ele2 = driver.FindElement(By.Id("u_0_b"));
ele2.Click();
Thread.Sleep(3000);
Console.Write("login button is clicked");
}
public void EndTest()
{
//close the browser
driver.Close();    
}
}
}

注意:在以上代码中,请在以下位置使用您的Facebook ID:xyz11@gmail.com和密码:########

执行测试脚本

要运行测试脚本,请执行以下过程:

  • 转到工具栏中的“测试” ,然后选择“测试资源管理器”,如下面的屏幕截图所示:

  • 屏幕上将出现“测试资源管理器”窗口,要查看所有可用的测试,我们必须构建解决方案。

  • 要构建解决方案,请根据给定的弹出菜单中选择Build并选择生成解决方案,我们可以在下面的截图中看到:

  • 完成Build解决方案后,由于未添加NUnit属性,因此无法在“测试资源管理器”窗口上看到“测试”。
  • NUnit提供了一些内置的属性,但是这里我们使用SetUp,Test和TearDown
  • 因此,我们将在代码中添加Test属性,如下所示:

注意:测试属性:用于将方法标记为可从NUnit测试运行器调用。

[Test]
public void ExecuteTest()
  • 添加Test属性时,将出现以下错误。
  • 为了克服此错误,我们将使用NUnit框架的引用,如下图所示:

  • 现在,我们转到测试资源管理器并再次构建解决方案,然后在测试资源管理器上获取ExecuteTest。
  • 之后,我们将运行选定的测试,如下图所示:

  • 运行测试脚本后,它将能够打开浏览器,如下面的屏幕截图所示:

  • 测试将失败,因为我们没有在代码中的任何地方调用Initialize方法。
  • 因此,我们需要通过在代码中添加另外两个名为SetUp和TearDown的属性来告诉NUnit Framework。


注意:SetUp:SetUp属性用于标识要立即调用的方法。每个测试运行。 TearDown:此属性用于标识在每次测试执行后立即调用的方法。并且即使抛出异常,也保证可以调用此方法。

添加所有三个属性后,我们的最终代码将如下所示:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using NUnit.Framework;
namespace SeleniumTest
{
class Sample1
{
//create the reference for the browser
IWebDriver driver = new ChromeDriver();
[SetUp]
public void Initialize()
{
//navigate to URL
driver.Navigate().GoToUrl("https://www.facebook.com/");
//Maximize the browser window
driver.Manage().Window.Maximize();
Thread.Sleep(2000);
}
[Test]
public void ExecuteTest()
{
//identify the username text box
IWebElement ele = driver.FindElement(By.Id("email"));
//enter the username value
ele.SendKeys("xyz11@gmail.com");
Thread.Sleep(2000);
Console.Write("username value is entered \n");          
//identify the password text box
IWebElement ele1 = driver.FindElement(By.Name("pass"));
//enter the password value
ele1.SendKeys("########");
Console.Write("password is entered \n");     
//click on the Login button
IWebElement ele2 = driver.FindElement(By.Id("u_0_b"));
ele2.Click();
Thread.Sleep(3000);
Console.Write("login button is clicked \n");
}
[TearDown]
public void EndTest()
{
//close the browser
driver.Close();    
}
}
}
  • 之后,再次执行构建解决方案并运行所选的测试。
  • 我们的测试在“测试资源管理器”窗口中通过,如下面的屏幕截图所示:

  • 上面的测试脚本将启动Google Chrome浏览器并自动执行所有测试方案,如下面的屏幕截图所示:

  • 或者,如果要查看输出,我们将传递一些值,方法是单击输出链接,以查看输出。
  • 我们可以看到在控制台上执行的所有操作的输出,如下面的屏幕快照所示: