Come si usa il selenium in C #?

Selenio

Ho scaricato i driver client C # e l’IDE. Sono riuscito a registrare alcuni test e li ho eseguiti con successo dall’IDE. Ma ora voglio farlo usando C #. Ho aggiunto tutte le DLL pertinenti (Firefox) al progetto, ma non ho la class Selenium . Qualche buongiorno sarebbe carino.

Dalla documentazione del 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. Installa il gestore pacchetti Nuget
    Link per il download: https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
  2. Creare un’applicazione console visiva in C #
  3. Fare clic con il tasto destro del mouse su progetto -> Gestisci pacchetti Nuget.
    Cerca “Selenium” e installa il pacchetto Selenium.Support

Fatto ora sei pronto per scrivere il tuo codice 🙂

Per codice con download IE, ad esempio driver
Link: http://selenium-release.storage.googleapis.com/index.html
Apri 2.45 come è l’ultima versione Scarica IEDriverServer_x64_2.45.0.zip o IEDriverServer_Win32_2.45.0.zip
Estrai e semplicemente incolla il file .exe in qualsiasi posizione, ad esempio C: \
Ricorda il percorso per un ulteriore utilizzo.

OverAll ref link: http://www.joecolantonio.com/2012/07/31/getting-started-using-selenium-2-0-webdriver-for-ie-in-visual-studio-c/

Il mio codice di esempio:

 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"); } } } } 

Configurare ide per selenium in concomitanza con c # è usare Visual Studio Express. E puoi nUnit come framework di test. Sotto i collegamenti fornisci maggiori dettagli. Sembra che tu abbia impostato ciò che è spiegato nel primo link. Quindi controlla il secondo link per maggiori dettagli su come creare uno script di base

Come installare i driver client C #, nUnit e selenium su VSExpress per i test automatici

Creazione del caso di test del driver Web Selenium di base utilizzando Nunit e C #

Esempio di codice dal blog di cui sopra

  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(); ) } } 

So che questa è una domanda più vecchia ma ho pensato di mettere queste informazioni là fuori per gli altri.

Una delle cose che ho avuto difficoltà a trovare era come usare PageFactory in C #. Soprattutto per più IWebElements. Se si desidera utilizzare PageFactory qui ci sono alcuni esempi. Fonte: PageFactory.cs

Per dichiarare un WebElement html, utilizzare questo all’interno del file di class.

 private const string _ID ="CommonIdinHTML"; [FindsBy(How = How.Id, Using = _ID)] private IList _MultipleResultsByID; private const string _ID2 ="IdOfElement"; [FindsBy(How = How.Id, Using = _ID2)] private IWebElement _ResultById; 

Non dimenticare di creare un’istanza degli elementi object della pagina all’interno del costruttore.

 public MyClass(){ PageFactory.InitElements(driver, this); } 

Ora puoi accedere a quell’elemento in uno qualsiasi dei tuoi file o metodi. Inoltre possiamo prendere percorsi relativi da quegli elementi, se mai lo desideriamo. Preferisco pagefactory perché:

  • Non ho mai bisogno di chiamare il driver direttamente usando driver.FindElement (By.Id (“id”))
  • Gli oggetti sono pigri inizializzati

Io uso questo per scrivere la mia attesa per i metodi degli elementi, i wrapper WebElements per accedere solo a ciò che ho bisogno di esporre agli script di test e aiuta a mantenere le cose pulite.

Questo rende la vita molto più semplice se disponi di webelementi dinamici (autogerati) come elenchi di dati. Devi semplicemente creare un wrapper che utilizzi IWebElements e aggiungere metodi per trovare l’elemento che stai cercando.

 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. Prima di tutto scarica Selenium IDE per Firefox dal Selenium IDE . Usalo e giocaci, quindi prova uno scenario, registra i passaggi e poi esporta il C # o il progetto Java secondo le tue esigenze.

Il file di codice contiene il codice qualcosa come:

 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 wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(30.00)); // Waiter 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; } } } } 
  1. Hai bisogno di ottenere driver cromato da qui
  2. È necessario ottenere pacchetti di nugget e DLL necessarie per il sito Web di selenium nuget
  3. È necessario comprendere le basi del Selenio dal sito Web del selenium

È tutto …

 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(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(); } } 

Usa il codice seguente una volta che hai aggiunto tutte le librerie C # necessarie al progetto nei riferimenti.

 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(); } } }