tutorial internet iedriverserver example chrome selenium webdriver selenium-webdriver selenium-ide

internet - selenium webdriver chrome



¿Por qué usamos WebDriver en lugar de Selenium IDE? (8)

¿Por qué no podemos registrar todos nuestros casos de prueba en IDE, exportarlo a Java / WebDriver y ejecutarlo en WebDriver

Gran pregunta, y aquí está la respuesta:

Selenium IDE es una herramienta de grabación y reproducción, que es muy fácil de usar, pero es muy poco fiable. La grabación y la reproducción son generalmente mal vistas en las aplicaciones web. Dado que las aplicaciones web se modifican con frecuencia, el IDE no es una solución ideal para un entorno de producción, debido a la pesadilla de mantenimiento que pueda surgir.

Déjame darte un ejemplo práctico. Usted registra su prueba y encuentra un elemento con una identificación dinámica. Claro que podemos importarlo al eclipse, pero ¿qué sucede cuando esa prueba comienza a fallar en el camino? ¿por qué no simplemente hacer su prueba ágil e independiente para atrapar estos en primer lugar.

También se reduce a sus principios de automatización de prueba. La automatización de pruebas en MI opinión (y en muchos otros profesionales), cree que la automatización de pruebas debe enfocarse desde una perspectiva de programación. Los programadores deben escribir las pruebas y mantener las pruebas. Idealmente, su personal de control de calidad debe estar capacitado para escribir y mantener sus propias pruebas.

Así que, de nuevo, volviendo a su pregunta, el IDE está diseñado para ser una solución rápida para la automatización, NO una solución para un conjunto de regresión completo.

¿Puede alguien explicar por qué las secuencias de comandos grabadas IDE fallan en Webdriver?

No he usado el IDE por un tiempo, pero la razón por la que fallan es porque los scripts que se exportan son simplemente los pasos , no un archivo java completo. Esto también se debe a que se supone que las exportaciones de Selenium IDE son agnósticas cuando se trata de cómo ejecutar su prueba. Digamos que soy un usuario de jUnit ... ¿y si Selenium IDE lo exportó a TestNG todo el tiempo? Eso no sería justo ... Honestamente, prefiero crear mis propias pruebas que cambiar esa única línea cada vez que creo mi archivo de prueba.

Puede leer el texto completo de una investigación realizada, llamada ¿Por qué se realizan las pruebas de grabación / reproducción de las aplicaciones web?

¿Por qué no podemos simplemente registrar todos nuestros casos de prueba en Selenium IDE , exportarlo a Java / WebDriver y ejecutarlo en WebDriver con Eclipse?

¡Necesito una explicación clara ya que estoy muy confundido al usar WebDriver!

¿Puede alguien explicar por qué las secuencias de comandos grabadas IDE fallan en WebDriver?


¿Por qué no podemos simplemente registrar todos nuestros casos de prueba en Selenium IDE, exportarlo a Java / WebDriver y ejecutarlo en WebDriver con Eclipse?

En realidad, puedes hacer esto con Selenium IDE con bastante facilidad. Registre su caso de prueba / suite de prueba en Selenium IDE, exporte a "Java / JUnit 4 / Webdriver" a un archivo .java. Esto generará una prueba JUnit que puede importar y ejecutar desde Eclipse (con la versión correcta de JUnit, por supuesto).

No es 100% confiable, y es posible que deba hacer algunos cambios / correcciones manuales, pero en general funciona bastante bien. Comience con un solo testcase pequeño y trabaje desde allí.


¿Por qué no solo grabar en el IDE y reproducir la grabación con WebDriver?

El IDE no sabe qué esperar

Supongamos que Bob está realizando comprobaciones manuales y registrando su interacción con Selenium IDE. Realiza una operación que demora un tiempo en actualizar la GUI, y cuando la operación finaliza, hace clic en un botón. Bob sabe que la GUI ha terminado de actualizarse porque una ruleta que se mostró cuando se inició la operación se elimina cuando la operación finaliza. ¿Cómo va a capturar el IDE el hecho de que la operación debe haber terminado antes de hacer clic en el botón? (Tenga en cuenta que este no es un caso donde el botón está desactivado hasta que la operación haya finalizado). Esto no es hipotético: cuando prueba tablas dinámicas (como las administradas por DataTables), el usuario puede cambiar cualquier cosa en cualquier momento.

Esta puede ser una de las razones por las que una secuencia de comandos creados con el IDE podría fallar con WebDriver. Simplemente no sabe qué esperar.

Es posible agregar esperas manualmente en el IDE, pero si lo hace, ya no estará "simplemente grabando todos nuestros casos de prueba". Y lo que estás haciendo se parece más a escribir código para WebDriver.

Los usuarios son ineficientes

No hace mucho tiempo hubo una pregunta de Selenium en la que el usuario quería que Selenium hiciera clic en el último registro de una tabla que tenía varias páginas de registros. Entonces, la pregunta era, ¿cómo puedo navegar por la tabla hasta llegar a la última página y luego hacer clic en el último registro? Alguien (tal vez yo, tal vez alguien más) señaló que si la tabla es ordenable, podría ordenarse en orden inverso y luego el código de Selenio podría hacer clic en el primer registro. Eso es 2 operaciones en lugar de p+1 operaciones: hacer clic en p veces, donde p es el número de páginas, más 1 vez para hacer clic en el registro.

Cuando escribimos el código para WebDriver, tenemos la oportunidad de escribir las pruebas para evitar tomar la ruta panorámica para obtener los resultados que queremos. Consulte el siguiente punto para obtener detalles técnicos sobre por qué es importante.

Las operaciones de selenio pueden ser costosas

Si el software que ejecuta los comandos de Selenium es local y su navegador es local, es posible que no sienta que las operaciones de Selenium pueden ser costosas, pero si ejecuta los comandos en una máquina y el navegador es remoto, notará una desaceleración significativa. Por ejemplo, si genera su navegador en una máquina virtual de Sauce Labs o en una máquina virtual de BrowserStack para ejecutar un conjunto de pruebas, las demoras en la red agregarán un tiempo significativo al tiempo que tarda el conjunto en completarse. Para un conjunto completo de pruebas de aplicaciones, esto puede significar muchos minutos más.

El IDE produce una secuencia de comandos que requieren un viaje de ida y vuelta entre el script de Selenium y el navegador. Cada viaje de ida y vuelta se suma. Supongamos que quiero verificar que dos elementos contengan el mismo texto. No voy a usar Selenese porque normalmente no uso el IDE pero usando el código de WebDriver en Python, el script podría ser:

a = driver.find_element_by_id("a") b = driver.find_element_by_id("b") assert_equal(a.text, b.text)

Este código requiere 4 viajes de ida y vuelta: un viaje de ida y vuelta por cada find_element... viaje find_element... y uno por acceso al campo de text . La misma prueba podría escribirse:

a_text, b_text = driver.execute_script(""" var a = document.getElementById("a"); var b = document.getElementById("b"); return [a.textcontent, b.textContent]; """); assert_equal(a_text, b_text);

Esto solo necesita un viaje de ida y vuelta. Cuando utiliza el IDE para registrar acciones, la secuencia de comandos es como el fragmento anterior: muchos viajes de ida y vuelta. Cuando escribe su código para WebDriver, tiene la oportunidad de optimizar a medida que codifica.

Esto no significa que el Selenium IDE no tenga uso, pero nunca pensaría simplemente en grabar las pruebas con él y luego reproducir esas grabaciones con WebDriver.


Otras personas han dicho muchas respuestas útiles. Una cosa que falta es que si escribe código en lugar de usar el IDE, tiene la capacidad de realizar cambios en la base de datos. Depende del sitio web que esté probando lo útil que es esto, pero he aquí algunos ejemplos útiles que he experimentado. En un caso, el sitio web tenía varias secciones de una clase. Una de nuestras pruebas fue fusionar estas secciones en una sola. El IDE no pudo hacer esto. Pero con webdriver podemos agregar todos nuestros datos de prueba en la base de datos, realizar la fusión y luego eliminar los datos de la base de datos.

Otra ventaja que tiene el webdriver es Selenium Grid. Con Grid puede ejecutar sus pruebas en paralelo y en múltiples navegadores. Esto hace que su prueba funcione más rápido y puede probar el código más a fondo.


Porque cuando la complejidad de su código aumentará, será difícil para usted administrarlo usando IDE. El mantenimiento de sus scripts será difícil usando IDE.

Además, exportar casos de prueba de IDE a webdriver no es 100% confiable.


Si eres un novato , puedes usar el 80% de tu script IDE como script JAVA de tu webdriver, solo tienes que improvisar ligeramente tu script IDE exportado y funcionará bien.

¡Pero cuando comienzas a probar funcionalidades complejas, tienes que aprender algunos de los métodos básicos de Java para resolverlo!


Siento disentir. No veo ninguna razón para tener que mantener un código adicional cuando un simple registro y reproducción pueden lograr los mismos resultados en una fracción del tiempo.

Estoy de acuerdo con que la impl del guión grabado debe ser ágil. No puede ser tan simple como los comandos de compilación y uno debe hacerlo ágil e incluso implementar sus propias macros (también conocidas como comandos / alias) específicas de la aplicación bajo prueba.

Aún así, si se implementa correctamente y con la ayuda de algunos complementos IDE de Selenium como el control de flujo, es muy fácil mantener estos trajes de prueba complejos y hacer que se reproduzcan a través del HTML Runner. Utilicé scripts HTML IDE de Selenium para cubrir completamente sitios complejos y reutilizar la misma secuencia de comandos para todos los modos receptivos de la aplicación.

El mantenimiento es simple ya que el IDE lo ayudará a ajustar rápidamente un cmd fallido y las esperas de AJAX se pueden contabilizar fácilmente al esperar que el contenido DOM cambie en la página. Todavía no estoy convencido de esta excusa de AJAX para descartar Selenium IDE.

Para una integración de Maven de los comandos de control de flujo / alias / macros utilizados por Selenium IDE y el plugin de prueba SureFire de Maven, consulte: https://github.com/paulbors/sideflow

Siéntase libre de usarlo en su producto y mejorar según sea necesario.


webdriver le permite ejecutar sus casos de prueba capturados con Selenium IDE en un servidor Selenium o vía RC a múltiples servidores. Esto incluye opciones para integrarse con proveedores habilitados con Selenium (ver el enlace en la parte inferior).

Por ejemplo, si capturó su caso de prueba en IDE, podría integrarse fácilmente con su propio servidor de selenio, o un proveedor como Saucelabs para manejar el funcionamiento de sus casos de prueba en Firefox en Ubuntu, Safari en OSX e IE10 en Windows 8 Como con cualquier caso de prueba, puede ejecutarlo desde su IDE (Eclipse / IDEA / etc) su constructor (maven / gradle /), y / o a través de su sistema de CI.

Visite https://saucelabs.com/selenium para ver algunos ejemplos. También utilizamos nuestros casos de prueba de selenio para pruebas de carga con Soasta: WebDriver permite el uso de pruebas IDE simples en diferentes contextos.