如何在C#中使用硒

本文关键字: | 更新日期: 2023-09-27 17:59:07

硒。

我下载了C#客户端驱动程序和IDE。我设法记录了一些测试,并成功地从IDE中运行了它们。但现在我想用C#来实现这一点。我在项目中添加了所有相关的DLL文件(Firefox),但我没有Selenium类。一些你好,世界那就太好了。

如何在C#中使用硒

来自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();
    }
}
  1. 安装NuGet数据包管理器

    下载链接:https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c

  2. 创建一个C#控制台应用程序

  3. 右键单击项目→ 管理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#

  1. 首先,从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;
                 }
             }
         }
     }
    
  2. 你需要从这里获取Chrome驱动程序。

  3. 您需要为SeleniumNuGet网站获取NuGet包和必要的DLL文件。

  4. 您需要从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();
    }
}
  1. 您需要安装Microsoft Visual Studio社区版
  2. 创建一个新项目作为C的测试项目#
  3. 从NuGet包管理器添加Selenium引用。那你就准备好了
  4. 创建一个新类,并使用[TestClass]和[TestMethod]注释来运行脚本
  5. 有关更多详细信息,请参阅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();
        }
    }
}
相关文章:
  • 没有找到相关文章