📅  最后修改于: 2020-11-06 05:01:20             🧑  作者: Mango
在本节中,我们将学习如何在Visual Studio和NUnit Framework的帮助下以C#编程语言创建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#是一种面向对象的编程语言,它在.Net框架上运行,并且发音为C-sharp。
开发C#语言来运行CLR,CLR代表“公共语言运行时”。
在C#中,我们可以借助函数将程序分解为多个部分。这就是为什么它也被称为结构化编程语言。
有关C#语言的更多详细信息,请参见以下链接:
https://www.javatpoint.com/c-sharp-tutorial
在本节中,我们将了解如何下载,安装Visual Studio以及如何使用Visual Studio,NUnit Framework配置Selenium以及如何使用C#编程语言在Visual Studio中执行测试脚本。
要将selenium与C#结合使用,请执行以下过程:
以下是在C#中使用Visual Studio配置Selenium的过程:
Visual Studio是C#IDE [集成开发环境],用于在Windows,Mac等各种平台上开发应用程序。
在这里,我们正在下载并安装Visual Studio for Windows平台。
要下载最新版本的Visual Studio for Windows平台,请参考以下链接:https://visualStudio.microsoft.com/downloads/
下载适用于Windows的Visual Studio平台后,我们将准备安装它。
要安装Visual Studio,请执行以下过程:
安装完成后,我们准备在Visual Studio上创建一个新项目。
要在Visual Studio上创建一个项目,请执行以下过程:
项目创建完成后,我们将在Visual Studio中借助NuGet软件包管理器添加Selenium WebDriver和Chrome驱动程序的引用。
请按照以下过程,在Visual Studio中添加Selenium WebDriver的引用:
请按照以下过程在Visual Studio中添加对Chrome驱动程序的引用:
要使用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();
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
第2步
在此步骤中,我们将在浏览器中浏览https://www.google.com/ URL。
并且示例代码如下:
driver.Navigate().GoToUrl("https://www.google.com/");
注意:GoToUrl()方法用于浏览URL。
第三步
要识别Google搜索框,请执行以下过程:
在此步骤中,我们试图借助其“名称”属性找到Google搜索文本框。
IWebElement ele = driver.FindElement(By.Name("q"));
第四步
在此步骤中,我们将值传递到Google搜索框中。
这里是示例代码:
ele.SendKeys("javatpoint tutorials");
步骤5
要确定Google搜索按钮,请执行以下过程:
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测试脚本后,我们将运行测试脚本。
请按照以下过程运行测试脚本:
在NUnit的帮助下编写测试脚本之前,我们将了解NUnit框架,在Visual Studio中下载并安装NUnit框架。
NUnit是适用于所有.Net语言的单元测试框架。它是开源软件,并且经过重新设计以充分利用.Net语言的许多新功能。
它还支持广泛的.Net语言平台。
NUnit3测试适配器是一个扩展,允许我们在Visual Studio中运行NUnit测试。
要在Visual Studio中下载NUnit3测试适配器,请执行以下步骤:
要添加NUnit的引用,请执行以下过程:
要在Visual Studio中创建NUnit类,请执行以下过程:
要使用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编写代码时,我们会将代码分为不同的部分:
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登录页面的用户名文本框。
请遵循以下过程:
这里是示例代码:
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登录页面的密码文本框,因此请执行以下过程:
这里是示例代码:
//identify the password text box
IWebElement ele1 = driver.FindElement(By.Name("pass"));
//enter the password value
ele1.SendKeys("########");
Console.Write("password is entered");
步骤5
一旦确定了用户名或密码文本框,我们将找到“登录”按钮并执行单击操作。
这里是示例代码:
//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和密码:########
要运行测试脚本,请执行以下过程:
注意:测试属性:用于将方法标记为可从NUnit测试运行器调用。
[Test]
public void ExecuteTest()
注意: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();
}
}
}