Convertir Selenium IDE a WebDriver con Visual Studio

Llevo bastantes meses asegurando la fiabilidad de un proyecto en continuo cambio en el que trabajo con Selenium IDE. Hasta el momento las alrededor de 109.000 líneas de código HTML han funcionado rezonablemente bien a pesar de los problemas que da su mantenimiento, permitiéndonos detectar los errores producidos por los cambios en el software de los programadores en el día a día.



Actualmente me estoy planteando pasarme a Selenium WebDriver. Estas son mis razones para el cambio:

A favor:

- Ejecutar las pruebas sobre los principales navegadores, no sólo Firefox.

- Tener todo el código en C#, pudiendo utilizar todos sus métodos y así no tener que usar los de javascript, como por ejemplo para el cálculo de fechas.

- Dejar de usar plugins de terceros como el que me permite tener instrucciones para el control de flujo.

- Olvidarme de las continuas actualizaciones de Firefox y de su compatibilidad con los distintos plugins de terceros que uso.

- Lanzar todos los tests usando las conocidas herramientas de Visual Studio o de NUnit.

- Lanzar las pruebas en paralelo con Selenium Grid. (por probar).

- Depuración más cómoda de las variables que con las extensiones de Firefox.

- Generación de informes. (por probar).

- Integración continua : lanzamiento programado nocturno.

- Reutilización de código. Donde antes había varios ficheros duplicados ahora hay una llamada al mismo método.


En contra:

- Todo el mundo conoce la máxima "Si funciona no lo toques", sobretodo en informática.

- Algunas instrucciones de Selenium IDE no existen en C#, hay que investigar la nueva manera de hacer lo mismo.

- Tiempo/Coste € de la conversión. Hay que preparar Visual Studio y luego ir fichero a fichero, en mi caso alrededor de 1000.

- Aparentemente es más cómodo las ampliaciones y el mantenimiento desde el IDE  (por probar).


Se mantiene:

- La depuración es intuitiva en ambos casos.






Cómo lo he hecho:

-Crear un proyecto librería en Visual Studio.

-Instalo Webdriver en Vs. VS -> Project -> Manage Nuget Packages-> “WebDriver” e instalar “Selenium Webdriver”. Esto coloca las librería necesarias en el proyecto.

-Descargar los drivers de cada uno de los navegadores a utilizar, por ejemplo googleando “webdriver chrome”. Para el de Safari te tienes que registrar en la página de Apple.

- Desde el plug in de Firefox -> “Export test case as” C# (Webdriver)

- Esto te crea un fichero .cs ejecutable en NUnit. Para poder lanzar los test de NUnit como si fueran tests de MsTest aquí puedes encontrar los pasos detallados en inglés:

a) “Unload Project”

b) Edita el fichero csproj

c) Añade este tag en el primer y guarda.
{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}

d) Instala NUnitforVS de aquí

d) Recarga el proyecto.

e) Menu Test -> Windows->Test View



- Ya tienes los test en formato NUnit pero con las comodidades de VS, como por ejemplo depurar.


-Introduce el código generado por la exportación en el proyecto de Test. Adjunto el código de utilización de cada driver:

A PARTIR DE AQUÍ YA ESTÁ BASTANTE "DEPRECATED"!!

Librerías
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome;
using System.Threading;

                Internet Explorer:
        private IWebDriver driver;
        private string baseURL;
 
        // Ubicación de los driver
        private const string DRIVERS_PATH = @"C:\{PATH}\Solucion\packages\Selenium.WebDriver.2.24.0\lib\net40\";
 
 
        [SetUp]
        public void SetupTest()
        {
            baseURL = "http://localhost:3517/"; 
 
            var options = new InternetExplorerOptions()
            {
                InitialBrowserUrl = baseURL,
                IntroduceInstabilityByIgnoringProtectedModeSettings = true
            };                      
 
            driver = new InternetExplorerDriver(DRIVERS_PATH, options);          
 
        }

                Chrome:
        private IWebDriver driver;
        private string baseURL;
 
        // Ubicación de los drivers
        private const string DRIVERS_PATH = @"C:\{PATH}\Solucion\packages\Selenium.WebDriver.2.24.0\lib\net40\";
 
 
        [SetUp]
        public void SetupTest()
        {
            baseURL = "http://localhost:3517/";                     
 
            driver = new ChromeDriver(DRIVERS_PATH);

        }

             Firefox:
        private IWebDriver driver;
        private string baseURL;
 
        // Ubicación de los drivers
        private const string DRIVERS_PATH = @"C:\{PATH}\Solucion\packages\Selenium.WebDriver.2.24.0\lib\net40\";
 
 
        [SetUp]
        public void SetupTest()
        {
            driver = new FirefoxDriver();
            baseURL = "http://localhost:3517/"; 
        }




Comentarios

  1. voy a encarar el mismo cambio, me sirve mucho esta información, gracias...

    ResponderEliminar
  2. Gracias por comentarlo Kilme, aníman este tipo de mensajes. Fuerza y al toro!

    ResponderEliminar

Publicar un comentario

Entradas populares