本文概述
- 解释Selenium?
- 什么是C#?
- 为什么C#对自动化测试有用?
- Selenium与C#
- 在C#中使用Visual Studio配置Selenium
- 在Visual Studio中使用NUnit配置Selenium
文章图片
在本节中, 我们将学习如何在Visual Studio和NUnit Framework的帮助下以C#编程语言创建Selenium测试脚本。
在本教程中, 我们将学习以下主题:
- 解释Selenium?
- 什么是C#?
- 为什么C#对自动化测试有用?
- Selenium与C#
- 在C#中使用Visual Studio配置Selenium
- 在Visual Studio中使用NUnit配置Selenium
并在各种操作系统(例如Windows, Mac, Linux)上的各种浏览器(例如Google Chrome, Firefox, Safari, Internet Explorer和Opera)中自动化测试脚本。
Selenium支持其他测试工具(例如TestNG和JUnit)来管理测试用例并生成测试报告。
有关Selenium的更多详细信息, 请参见以下链接:
https://www.srcmini.com/selenium-tutorial
什么是C#? C#是一种面向对象的编程语言, 它在.Net框架上运行, 并且发音为C-sharp。
开发C#语言来运行CLR, CLR代表” 公共语言运行时” 。
在C#中, 我们可以借助函数将程序分解为多个部分。这就是为什么它也被称为结构化编程语言。
有关C#语言的更多详细信息, 请参见以下链接:
https://www.srcmini.com/c-sharp-tutorial
为什么C#对自动化测试有用?
- C#对自动化测试很有用, 因为它允许自动化测试工程师借助.Net框架上的Visual Studio开发应用程序。
- C#是另一种编程语言, 也支持与Selenium的绑定。
- 并且此语言绑定将与java程序一起更新。
- C#IDE是Visual Studio, 与Java的Eclipse相比, 它提供了更快的开发和调试体验。
- C#具有许多内置函数, 可加快开发速度。
要将Selenium与C#结合使用, 请执行以下过程:
- 在C#中使用Visual Studio配置Selenium
- 在Visual Studio中使用NUnit配置Selenium
- 下载并安装C#IDE(Visual Studio)
- 在Visual Studio中创建一个新项目
- 在Visual Studio中添加引用
- 使用C#编写Selenium测试脚本
- 在Visual Studio中运行Selenium测试脚本
Visual Studio是C#IDE [集成开发环境], 用于在Windows, Mac等各种平台上开发应用程序。
在这里, 我们正在下载并安装Visual Studio for Windows平台。
下载Visual Studio
要下载用于Windows平台的Visual Studio的最新版本, 请参考以下链接: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浏览器上执行操作, 我们将再次右键单击” 引用” , 然后从弹出菜单中选择” 管理NuGet软件包” 选项。
- 然后在搜索字段中搜索chrome驱动程序, 然后选择Chrome.WebDriver并单击” 安装” 按钮, 如下图所示:
文章图片
- 并且, 单击” 预览更改” 窗口中的” 确定” 按钮以进行进一步处理。
文章图片
- 在Visual Studio中添加Selenium WebDriver和Chrome驱动程序引用之后, 我们准备使用C#编程语言编写测试脚本。
要使用C#编程语言编写Selenium测试脚本, 请执行以下步骤:
Steps | Actions | Input | Expected Result |
---|---|---|---|
1. | 为浏览器创建参考 | 应该创建浏览器的参考。 | |
2. | 导航到Google主页。 | https://www.google.com/ | 必须显示Google主页。 |
3. | 识别Google搜索文本框并传递值。 | srcmini教程 | 应该标识Google搜索框, 然后输入值。 |
4. | 识别并单击Google搜索按钮。 | 应该识别并单击Google搜索按钮。 | |
5. | 关闭浏览器。 | 浏览器应关闭。 |
步骤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搜索框, 请执行以下过程:
在此步骤中, 我们尝试借助其Name属性找到Google搜索文本框。
右键单击Google搜索文本框, 然后在弹出菜单中选择” 检查” 选项, 如下图所示:
文章图片
将启动开发人员工具窗口, 其中包含开发Google搜索文本框时使用的所有特定代码, 我们将在其中复制其Name属性的值” q” 。
文章图片
并且示例代码如下:
IWebElement ele = driver.FindElement(By.Name("q"));
步骤4
在此步骤中, 我们将值传递到Google搜索框中。
这里是示例代码:
ele.SendKeys("srcmini tutorials");
<
/p>
步骤5
要确定Google搜索按钮, 请执行以下过程:
- 右键单击Google搜索按钮, 然后从给定的弹出菜单中选择” 检查” 选项, 如下图所示:
文章图片
- 将启动开发人员工具窗口, 其中包含开发Google搜索按钮时使用的所有特定代码。
- 然后, 复制其名称属性的值” btnK” , 如下图所示:
文章图片
- 并且, 示例代码如下:
IWebElement ele1 = driver.FindElement(By.Name("btnK"));
//click on the search buttonele1.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 browserIWebDriver driver = new ChromeDriver();
// navigate to URLdriver.Navigate().GoToUrl("https://www.google.com/");
Thread.Sleep(2000);
// identify the Google search text boxIWebElement ele = driver.FindElement(By.Name("q"));
//enter the value in the google search text boxele.SendKeys("srcmini tutorials");
Thread.Sleep(2000);
//identify the google search buttonIWebElement ele1 = driver.FindElement(By.Name("btnK"));
// click on the Google search buttonele1.Click();
Thread.Sleep(3000);
//close the browserdriver.Close();
Console.Write("test case ended ");
}}}
运行测试脚本
编写完Selenium测试脚本后, 我们将运行测试脚本。
请按照以下过程运行测试脚本:
- 单击开始按钮以执行Programcs文件, 如下图所示:
文章图片
- 单击开始按钮后, 将开始执行过程, 如下图所示:
文章图片
- 上面的测试脚本将启动Google Chrome浏览器并自动执行所有测试方案。
文章图片
在Visual Studio中使用NUnit配置Selenium 在NUnit的帮助下编写测试脚本之前, 我们将了解NUnit Framework, 并在Visual Studio中下载并安装NUnit Framework。
- 什么是NUnit框架?
- 下载NUnit3测试适配器
- 为NUnit添加引用
- 创建一个NUnit类
- 使用NUnit编写Selenium测试脚本
- 执行测试脚本
NUnit是适用于所有.Net语言的单元测试框架。它是开源软件, 经过重新设计, 可以利用.Net语言的许多新功能。
它还支持广泛的.Net语言平台。
下载NUnit3测试适配器
NUnit3测试适配器是一个扩展, 允许我们在Visual Studio中运行NUnit测试。
要在Visual Studio中下载NUnit3测试适配器, 请执行以下步骤:
- 首先, 转到扩展, 然后在Visual Studio中选择” 管理扩展” 选项。
文章图片
- 屏幕上将出现” Manage Extensions” 窗口, 我们将在其中搜索NUnit, 然后单击” NUnit 3 Test Adapter” 的” 下载” 按钮, 如下面的屏幕截图所示:
文章图片
- 单击下载按钮后, 它将要求我们关闭Visual Studio来修改更改, 然后单击” 修改” 按钮, 如下面的屏幕快照所示:
文章图片
- 单击” 修改” 按钮后, 它将开始安装和修改NUnit 3测试适配器。
- 完成所有修改后, 我们得到以下窗口:
文章图片
- 正如我们在” 管理扩展” 窗口中看到的那样, 已成功安装NUnit 3测试适配器。
文章图片
- 完成NUnit 3测试适配器的安装过程后, 我们将添加NUnit的引用。
要添加NUnit的引用, 请执行以下过程:
- 右键单击” 解决方案资源管理器” 中的” 引用” , 然后在给定的弹出菜单中选择” 管理NuGet软件包” 选项。
文章图片
- 在” 管理NuGet软件包” 窗口中, 我们将在搜索字段中搜索NUnit, 然后选择第一个选项作为NUnit, 然后单击” 安装” 按钮, 如下面的屏幕截图所示:
文章图片
- 单击” 安装” 按钮后, 单击” 确定” 的屏幕将显示” 预览更改” 窗口。
文章图片
- 成功安装软件包后, 我们将获得以下输出消息。
文章图片
创建NUnit类
要在Visual Studio中创建NUnit类, 请执行以下过程:
- 右键单击SeleniumTest项目, 然后转到” 添加” , 然后从给定的弹出菜单中选择” 类” 选项。
文章图片
- 屏幕上将出现Add New Item窗口, 我们将提供类名称为Sample1, 然后单击Add按钮, 如下面的屏幕截图所示:
文章图片
- 单击添加按钮后, 以下窗口将出现在屏幕上:
文章图片
- 成功创建类后, 我们准备使用NUnit编写测试脚本。
要使用NUnit编写Selenium测试脚本, 请遵循以下过程:
出于测试目的, 我们将在Facebook应用程序上执行登录操作。
Steps | Actions | Input | Expected Result |
---|---|---|---|
1. | 打开谷歌浏览器。 | 应该打开Goog??le Chrome浏览器。 | |
2. | 导航到Facebook登录页面。 | https://www.facebook.com | 必须显示Facebook登录页面。 |
3. | 标识用户名文本框并传递值。 | Username=xyz11@gmail.com | 应标识用户名文本框, 并输入值。 |
4. | 标识密码文本框并传递值。 | Password=####### | 应该标识” 密码” 文本框, 然后输入值。 |
5. | 标识” 登录” 按钮, 然后单击它。 | 应该确定并单击” 登录” 按钮。 | |
6. | 关闭浏览器。 | 浏览器应关闭。 |
步骤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 URLdriver.Navigate().GoToUrl("https://www.facebook.com/");
//Maximize the browser windowdriver.Manage().Window.Maximize();
Thread.Sleep(2000);
}
第三步
在此步骤中, 我们将在ExecuteTest()方法下标识Facebook登录页面的用户名文本框。
请遵循以下过程:
- 右键单击用户名文本框, 然后单击检查元素, 如下图所示:
文章图片
- 将打开具有所有特定代码的开发人员工具窗口, 这些代码将在用户名文本框的开发中使用。
文章图片
- 将其id属性的值复制为” email” , 并将其粘贴到代码中。
public void ExecuteTest(){//identify the username text boxIWebElement ele = driver.FindElement(By.Id("email"));
//enter the username valueele.SendKeys("xyz11@gmail.com");
Thread.Sleep(2000);
Console.Write("username value is entered \n");
步骤4
之后, 我们将识别Facebook登录页面的密码文本框, 因此请执行以下过程:
- 右键单击密码文本框, 然后在弹出菜单中单击” 检查元素” 选项, 如下图所示:
文章图片
- 它将启动一个包含所有特定代码的开发人员工具窗口, 这些代码用于开发密码文本框。
文章图片
- 将其name属性的值复制为” pass” 并将其粘贴到代码中。
//identify the password text boxIWebElement ele1 = driver.FindElement(By.Name("pass"));
//enter the password valueele1.SendKeys("########");
Console.Write("password is entered");
步骤5
一旦确定了用户名或密码文本框, 我们将找到” 登录” 按钮并执行单击操作。
- 右键单击” 登录” 按钮, 然后从给定的弹出菜单中选择” 检查” 选项, 如下图所示:
文章图片
- 具有所有特定代码的开发人员工具窗口将启动, 在登录按钮的开发中将使用这些特定代码, 如下面的屏幕截图所示:
文章图片
- 复制其Id属性” u_0_b” 的值并将其粘贴到代码中。
//click on the Log in buttonIWebElement 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 browserdriver.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 browserIWebDriver driver = new ChromeDriver();
public void Initialize(){//navigate to URLdriver.Navigate().GoToUrl("https://www.facebook.com/");
//Maximize the browser windowdriver.Manage().Window.Maximize();
Thread.Sleep(2000);
}public void ExecuteTest(){//identify the username text boxIWebElement ele = driver.FindElement(By.Id("email"));
//enter the username valueele.SendKeys("xyz11@gmail.com");
Thread.Sleep(2000);
Console.Write("username value is entered");
//identify the password text boxIWebElement ele1 = driver.FindElement(By.Name("pass"));
//enter the password valueele1.SendKeys("########");
Console.Write("password is entered");
//click on the Login buttonIWebElement ele2 = driver.FindElement(By.Id("u_0_b"));
ele2.Click();
Thread.Sleep(3000);
Console.Write("login button is clicked");
}public void EndTest(){//close the browserdriver.Close();
}}}
注意:在以上代码中, 请在以下位置使用你的Facebook ID:xyz11@gmail.com和密码:######## 执行测试脚本
要运行测试脚本, 请执行以下过程:
- 转到工具栏中的” 测试” , 然后选择” 测试资源管理器” , 如下面的屏幕截图所示:
文章图片
- 屏幕上将出现” 测试资源管理器” 窗口, 要查看所有可用的测试, 我们必须构建解决方案。
文章图片
- 要构建解决方案, 请转到” 构建” , 然后从给定的弹出菜单中选择” 构建解决方案” , 如下面的屏幕截图所示:
文章图片
- 一旦完成了Build解决方案, 就无法在测试资源管理器窗口上看到” 测试” , 因为我们没有添加NUnit属性。
- NUnit提供了一些内置的属性, 但是这里我们使用SetUp, Test和TearDown
- 因此, 我们将在代码中添加Test属性, 如下所示:
[Test]public void ExecuteTest()
- 添加Test属性时, 将出现以下错误。
- 为了克服此错误, 我们将使用NUnit框架的引用, 如下图所示:
文章图片
- 现在, 我们转到测试资源管理器并再次构建解决方案, 然后在测试资源管理器上获取ExecuteTest。
- 之后, 我们将运行选定的测试, 如下图所示:
文章图片
- 运行测试脚本后, 它将能够打开浏览器, 如下面的屏幕截图所示:
文章图片
- 测试将失败, 因为我们没有在代码中的任何地方调用Initialize方法。
- 因此, 我们需要通过在代码中添加另外两个名为SetUp和TearDown的属性来告诉NUnit Framework。
文章图片
注意:SetUp:SetUp属性用于标识要立即调用的方法。每个测试运行。 TearDown:此属性用于标识在每次测试执行后立即调用的方法。并且即使抛出异常, 也可以保证调用此方法。 【Selenium与C#测试教程详细步骤图解】添加所有三个属性后, 我们的最终代码将如下所示:
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 browserIWebDriver driver = new ChromeDriver();
[SetUp]public void Initialize(){//navigate to URLdriver.Navigate().GoToUrl("https://www.facebook.com/");
//Maximize the browser windowdriver.Manage().Window.Maximize();
Thread.Sleep(2000);
}[Test]public void ExecuteTest(){//identify the username text boxIWebElement ele = driver.FindElement(By.Id("email"));
//enter the username valueele.SendKeys("xyz11@gmail.com");
Thread.Sleep(2000);
Console.Write("username value is entered \n");
//identify the password text boxIWebElement ele1 = driver.FindElement(By.Name("pass"));
//enter the password valueele1.SendKeys("########");
Console.Write("password is entered \n");
//click on the Login buttonIWebElement 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 browserdriver.Close();
}}}
- 之后, 再次执行构建解决方案并运行所选的测试。
- 我们的测试在” 测试资源管理器” 窗口中通过, 如下图所示:
文章图片
- 上面的测试脚本将启动Google Chrome浏览器并自动执行所有测试方案, 如下面的屏幕截图所示:
文章图片
- 或者, 如果我们想查看输出, 我们将传递一些值并通过单击输出链接来查看输出。
- 我们可以看到在控制台上执行的所有操作的输出, 如下面的屏幕快照所示:
文章图片
推荐阅读
- Selenium WebDriver命令示例图解
- Selenium WebDriver教程介绍
- Selenium IDE-手动创建测试用例图解
- 移动端用Cordova将vue项目打包成app
- Android PreferenceScreen
- Android开发进阶之路,你需要掌握这些关键技术!40万年薪不是梦
- appium 元素定位
- Operator '||' cannot be applied to operands of type 'bool?' and 'bool?'(代码片段
- Web测试和app测试区别()