Selenium概述:
Selenium是一个开源的Web自动化测试工具,支持多浏览器和多操作系统。它允许测试人员使用多种编程语言(如Java、C#、Python、.Net、Ruby、PHP和Perl)编写自动化测试代码。
C#是一种派生自C++和Java的面向对象编程语言。C#允许以下是C#的关键特性。
- 它是一种面向对象的编程语言
- 它支持控制台、Windows和基于Web的应用程序的开发
- 它提供封装、继承和多态性等功能。
C#的基本语法:
C#中的程序需要包含以下部分
- 命名空间声明
- 类
- 类属性和方法
- 主要方法
- 程序语句
示例:
下面是一个示例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)在下一屏幕中,
- 选择选项“Visual C#”
- 单击控制台应用程序(.Net Framework)
- 输入名称“Guru99”
- 单击确定
步骤3)一旦项目创建成功,将显示以下屏幕。
使用Selenium WebDriver设置Visual Studio:
步骤1)导航到Tools->NuGet Package Manager->Manage NuGet Packages for Solution
步骤2)在下一个屏幕中
- 在结果屏幕上搜索Selenium
- 选择第一个搜索结果
- 选中项目复选框
- 单击“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)在下一个窗口中
- 搜索NUnit
- 选择搜索结果
- 选择项目
- 单击安装
步骤3)将出现以下弹出窗口。单击“确定”按钮。
步骤4)安装完成后将出现以下消息。
下载NUnit测试适配器的步骤
现在,在本NUnit教程中,我们将介绍下载NUnit测试适配器的步骤:
注意,以下步骤仅适用于32位计算机。对于64位计算机,需要按照下面提到的相同过程下载“NUnit3测试适配器”。
步骤1)导航到Tools->NuGet Package Manager->Manage NuGet Packages for Solution。在该屏幕中,
- 搜索NUnitTestAdapter
- 单击搜索结果
- 选择项目
- 单击安装
步骤2)在确认弹出窗口中单击确定。安装完成后,将看到以下消息-
Selenium和NUnit框架:
Selenium与NUnit框架的集成允许测试人员区分不同的测试类。NUnit还允许测试人员在运行测试之前和之后使用诸如Setup、Test和tearDown等注释来执行操作。
通过创建NUnit测试类并使用NUnit框架运行测试类,可以将NUnit框架与Selenium集成。
使用NUnit框架创建和运行测试类需要本Selenium C#框架教程中的以下步骤。
在Selenium中创建NUnit测试类的步骤:
步骤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可用的命令类别。
- 浏览器命令
- Web元素命令
- 下拉命令
现在,在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
|
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单击链接:
测试场景:
- 导航到Demo
- 最大化窗口
- 单击“Testing”(测试)菜单
- 关闭浏览器
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定位器将数据输入文本框并单击按钮:
测试场景:
- 导航至guru99
- 在电子邮件文本框中输入数据
- 点击注册按钮
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定位器将数据输入文本框并单击按钮:
测试场景:
- 导航至guru99
- 在电子邮件文本框中输入数据
- 点击注册按钮
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:在下拉列表中选择一个值:
测试场景:
- 导航至guru99
- 单击SAP链接
- 在名称和电子邮件文本框中输入数据
- 从课程下拉列表中选择一个值
- 关闭浏览器
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命令和下拉命令。