如何在C#中使用硒
本文关键字: | 更新日期: 2023-09-27 17:59:07
硒。
我下载了C#客户端驱动程序和IDE。我设法记录了一些测试,并成功地从IDE中运行了它们。但现在我想用C#来实现这一点。我在项目中添加了所有相关的DLL文件(Firefox),但我没有Selenium
类。一些你好,世界那就太好了。
来自Selenium文档:
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
class GoogleSuggest
{
static void Main(string[] args)
{
IWebDriver driver = new FirefoxDriver();
//Notice navigation is slightly different than the Java version
//This is because 'get' is a keyword in C#
driver.Navigate().GoToUrl("http://www.google.com/");
IWebElement query = driver.FindElement(By.Name("q"));
query.SendKeys("Cheese");
System.Console.WriteLine("Page title is: " + driver.Title);
driver.Quit();
}
}
-
安装NuGet数据包管理器
下载链接:https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
-
创建一个C#控制台应用程序
-
右键单击项目→ 管理NuGet包。搜索";硒";并安装程序包CCD_ 2。
你现在已经完成了,你已经准备好写代码了:)
有关使用Internet Explorer的代码,请下载Internet Explorer驱动程序。
链接:http://selenium-release.storage.googleapis.com/index.html
- 打开2.45作为其最新版本
- 下载IEDriverServer_x64_2.45.0.zip或IEDriverServer_Win32.2.45.0.zip
- 提取并简单地将.exe文件粘贴到任何位置,例如C:''
- 记住路径以便进一步使用
总体参考链接:Selenium 2.0 WebDriver与Visual Studio,C#,&IE–入门
我的样本代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.IE;
namespace Selenium_HelloWorld
{
class Program
{
static void Main(string[] args)
{
IWebDriver driver = new InternetExplorerDriver("C:''");
driver.Navigate().GoToUrl("http://108.178.174.137");
driver.Manage().Window.Maximize();
driver.FindElement(By.Id("inputName")).SendKeys("apatra");
driver.FindElement(By.Id("inputPassword")).SendKeys("asd");
driver.FindElement(By.Name("DoLogin")).Click();
string output = driver.FindElement( By.XPath(".//*[@id='tab-general']/div/div[2]/div[1]/div[2]/div/strong")).Text;
if (output != null )
{
Console.WriteLine("Test Passed :) ");
}
else
{
Console.WriteLine("Test Failed");
}
}
}
}
要将Selenium的IDE与C#一起设置,就需要使用Visual Studio学习版。您可以使用NUnit作为测试框架。以下链接为您提供了更多详细信息。你似乎已经设置好了第一个链接中所解释的内容。因此,请查看第二个链接,了解有关如何创建基本脚本的更多详细信息。
如何在Visual Studio Express上为自动化测试设置C#、NUnit和Selenium客户端驱动程序
使用NUnit和C#创建一个基本的Selenium web驱动程序测试用例
来自上述博客文章的示例代码:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
// Step a
using OpenQA.Selenium;
using OpenQA.Selenium.Support;
using OpenQA.Selenium.Firefox;
using NUnit.Framework;
namespace NUnitSelenium
{
[TestFixture]
public class UnitTest1
{
[SetUp]
public void SetupTest()
{
}
[Test]
public void Test_OpeningHomePage()
{
// Step b - Initiating webdriver
IWebDriver driver = new FirefoxDriver();
// Step c: Making driver to navigate
driver.Navigate().GoToUrl("http://docs.seleniumhq.org/");
// Step d
IWebElement myLink = driver.FindElement(By.LinkText("Download"));
myLink.Click();
// Step e
driver.Quit();
)
}
}
我很难找到的一件事是如何在C#中使用PageFactory。特别是对于多个IWebElements。如果你想使用PageFactory,这里有几个例子。来源:PageFactory.cs
要声明HTML WebElement,请在类文件中使用它。
private const string _ID ="CommonIdinHTML";
[FindsBy(How = How.Id, Using = _ID)]
private IList<IWebElement> _MultipleResultsByID;
private const string _ID2 ="IdOfElement";
[FindsBy(How = How.Id, Using = _ID2)]
private IWebElement _ResultById;
不要忘记在构造函数中实例化页面对象元素。
public MyClass(){
PageFactory.InitElements(driver, this);
}
现在,您可以在任何文件或方法中访问该元素。此外,如果我们愿意的话,我们可以从这些元素中选择相对路径。我更喜欢pagefactory,因为:
- 我从来都不需要直接用司机打电话给司机。FindElement(按Id("Id"))
- 对象已延迟初始化
我用它来编写我自己的等待元素方法,WebElements包装器,只访问我需要向测试脚本公开的内容,并帮助保持干净。
如果你有动态的(自动生成的)网络元素,比如数据列表,这会让生活变得更容易。您只需创建一个包装器,该包装器将使用IWebElements并添加方法来查找您要查找的元素。
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"D:'DownloadeSampleCode'WordpressAutomation'WordpressAutomation'Selenium", "geckodriver.exe");
service.Port = 64444;
service.FirefoxBinaryPath = @"C:'Program Files (x86)'Mozilla Firefox'firefox.exe";
Instance = new FirefoxDriver(service);
C#
-
首先,从SeleniumIDE下载适用于Firefox的Seleniumide。
使用并试用它,测试场景,记录步骤,然后根据您的需求将其导出为C#或Java项目。
代码文件包含的代码类似于:
using System; using System.IO; using Microsoft.VisualStudio.TestTools.UnitTesting; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; // Add this name space to access WebDriverWait using OpenQA.Selenium.Support.UI; namespace MyTest { [TestClass] public class MyTest { public static IWebDriver Driver = null; // Use TestInitialize to run code before running each test [TestInitialize()] public void MyTestInitialize() { try { string path = Path.GetFullPath(""); // Copy the Chrome driver to the debug // folder in the bin or set path accordingly Driver = new ChromeDriver(path); } catch (Exception ex) { string error = ex.Message; } } // Use TestCleanup to run code after each test has run [TestCleanup()] public void MyCleanup() { Driver.Quit(); } [TestMethod] public void MyTestMethod() { try { string url = "http://www.google.com"; Driver.Navigate().GoToUrl(url); IWait<IWebDriver> wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(30.00)); // Wait in Selenium wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath(@"//*[@id='lst - ib']"))); var txtBox = Driver.FindElement(By.XPath(@"//*[@id='lst - ib']")); txtBox.SendKeys("Google Office"); var btnSearch = Driver.FindElement(By.XPath("//*[@id='tsf']/div[2]/div[3]/center/input[1]")); btnSearch.Click(); System.Threading.Thread.Sleep(5000); } catch (Exception ex) { string error = ex.Message; } } } }
-
你需要从这里获取Chrome驱动程序。
-
您需要为SeleniumNuGet网站获取NuGet包和必要的DLL文件。
-
您需要从Selenium文档网站了解Selenium的基本知识。
仅此而已。。。
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Support.UI;
using SeleniumAutomationFramework.CommonMethods;
using System.Text;
[TestClass]
public class SampleInCSharp
{
public static IWebDriver driver = Browser.CreateWebDriver(BrowserType.chrome);
[TestMethod]
public void SampleMethodCSharp()
{
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
driver.Url = "http://www.store.demoqa.com";
driver.Manage().Window.Maximize();
driver.FindElement(By.XPath(".//*[@id='account']/a")).Click();
driver.FindElement(By.Id("log")).SendKeys("kalyan");
driver.FindElement(By.Id("pwd")).SendKeys("kalyan");
driver.FindElement(By.Id("login")).Click();
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement myDynamicElement = wait.Until<IWebElement>(d => d.FindElement(By.LinkText("Log out")));
Actions builder = new Actions(driver);
builder.MoveToElement(driver.FindElement(By.XPath(".//*[@id='menu-item-33']/a"))).Build().Perform();
driver.FindElement(By.XPath(".//*[@id='menu-item-37']/a")).Click();
driver.FindElement(By.ClassName("wpsc_buy_button")).Click();
driver.FindElement(By.XPath(".//*[@id='fancy_notification_content']/a[1]")).Click();
driver.FindElement(By.Name("quantity")).Clear();
driver.FindElement(By.Name("quantity")).SendKeys("10");
driver.FindElement(By.XPath("//*[@id='checkout_page_container']/div[1]/a/span")).Click();
driver.FindElement(By.ClassName("account_icon")).Click();
driver.FindElement(By.LinkText("Log out")).Click();
driver.Close();
}
}
- 您需要安装Microsoft Visual Studio社区版
- 创建一个新项目作为C的测试项目#
- 从NuGet包管理器添加Selenium引用。那你就准备好了
- 创建一个新类,并使用[TestClass]和[TestMethod]注释来运行脚本
- 有关更多详细信息,请参阅Run Selenium C#| Setup Selenium and C#| Configure Selenium C#
将所有必需的C#库添加到引用中的项目后,请使用以下代码。
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace SeleniumWithCsharp
{
class Test
{
public IWebDriver driver;
public void openGoogle()
{
// creating Browser Instance
driver = new FirefoxDriver();
//Maximizing the Browser
driver.Manage().Window.Maximize();
// Opening the URL
driver.Navigate().GoToUrl("http://google.com");
driver.FindElement(By.Id("lst-ib")).SendKeys("Hello World");
driver.FindElement(By.Name("btnG")).Click();
}
static void Main()
{
Test test = new Test();
test.openGoogle();
}
}
}