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.
- 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.
- 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.
- 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:
- 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.
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/";
}
voy a encarar el mismo cambio, me sirve mucho esta información, gracias...
ResponderEliminarGracias por comentarlo Kilme, aníman este tipo de mensajes. Fuerza y al toro!
ResponderEliminar