2011-06-13 9 views
13

Selenium.¿Cómo uso el selenio en C#?

He descargado los controladores de cliente C# y el IDE. Logré grabar algunas pruebas y las ejecuté con éxito desde el IDE. Pero ahora quiero hacer eso usando C#. Agregué todas las DLL relevantes (Firefox) al proyecto, pero no tengo la clase Selenium. Algún hola mundo estaría bien.

+1

Asumo que has mirado esto? http://seleniumhq.org/docs/03_webdriver.html#the-5-minute-getting-started-guide –

+0

¿Has intentado googlear? De acuerdo, hay mucho, ¿quizás la mayor parte? - de material de Selenio relacionado con Java, pero definitivamente también hay tutoriales básicos de C#/VS/Selenium que responden a tu pregunta. –

+0

He descargado los controladores C# y el IDE -> ¿Qué quieres decir con IDE? ¿Es para escribir el código de selenio C#? como Visual Studio. O, ¿es Selenium IDE? –

Respuesta

26

Desde el Selenium Documentation:

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

Para configurar IDE para el selenio en conjunto con C# es utilizar expresar Visual Studio. Y puede nUnit como el marco de prueba. A continuación, los enlaces le brindan más detalles. Parece que has configurado lo que se explica en el primer enlace. A fin de comprobar el segundo enlace para más detalles sobre cómo crear un guión básico

How to setup C#,nUnit and selenium client drivers on VSExpress for Automated tests

Creating Basic Selenium web driver test case using Nunit and C#

Código de la muestra desde el blog anterior

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

     ) 
     } 
} 
4
  1. Instalar Nuget gestor de paquetes
    Enlace de descarga: https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
  2. Cree una aplicación de consola visual C#
  3. Haga clic derecho en project -> Manage Nuget Packages.
    Búsqueda de "selenio" e instalar el paquete Selenium.Support

hecho ahora está listo para escribir el código :)

Para el código con el IE descarga es decir controlador
Enlace: http://selenium-release.storage.googleapis.com/index.html
abierta 2.45, ya que es la última versión Descargar IEDriverServer_x64_2.45.0.zip o IEDriverServer_Win32_2.45.0.zip
Extraer y simplemente pegar el archivo .exe en cualquier lugar, por ejemplo, C: \
Recuerde la ruta para un uso posterior.

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

MI Código de ejemplo:

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

usar el siguiente código una vez que haya añadido todas las bibliotecas de C# requeridos para el proyecto en las referencias.

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

    } 
} 
2

Sé que esto es una pregunta más antiguo, pero pensé que iba a poner esta información por ahí para los demás.

Una de las cosas que me costó encontrar fue cómo utilizar PageFactory en C#. Especialmente para múltiples IWebElements. Si desea utilizar PageFactory aquí hay algunos ejemplos. Source: PageFactory.cs

Para declarar un html WebElement use esto dentro del archivo de clase.

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; 

No se olvide de crear instancias de los elementos de la página de objetos al interior del constructor.

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

Ahora puede acceder a ese elemento en cualquiera de sus archivos o métodos. También podemos tomar caminos relativos de esos elementos si lo deseamos. Yo prefiero pagefactory porque:

  • yo no he que llamar directamente al conductor mediante driver.FindElement (By.Id ("id"))
  • Los objetos son lazy initialized

I Úselo para escribir mi propia espera para los métodos de elementos, los envoltorios de WebElements para acceder solo a lo que necesito exponer a los scripts de prueba, y ayuda a mantener las cosas limpias.

Esto hace la vida mucho más fácil si tiene elementos dinámicos (autogerated) como listas de datos. Simplemente crea un contenedor que tomará IWebElements y agregará métodos para encontrar el elemento que está buscando.

1
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); 
+0

Por favor explique su respuesta. Aquí se desaconsejan las respuestas de solo código, ya que no enseñan nada; solo fomentan la codificación de copiar y pegar. Puede usar el enlace editar debajo de su respuesta para agregar información adicional. ¡Gracias! –

1

C#

  1. En primer lugar descarga Selenio IDE para Firefox desde el Selenium IDE. Use y juegue con él, luego pruebe un escenario, registre los pasos y luego exporte el proyecto C# o Java según sus requisitos.

El archivo de código contiene el código de algo como:

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));     // 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. Usted necesita obtener controlador de cromo de here
  2. Usted necesita obtener paquetes pepita & dlls necesarias para el selenio página web Nuget
  3. Necesita comprender los fundamentos del selenio en el sitio web de doctores de selenio

Eso es todo ...

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