Arquitectura Selenium Webdriver: la mayoría de los principiantes no saben

Vamos a empezar con Tutorial de selenio Libro negro en un enfoque exhaustivo y diferente, en este primer segmento del tutorial de Selenium, discutiremos sobreArquitectura de Selenium Webdriver, qué es Selenium Webdriver, descripción general de Selenium Webdriver, Breve historia del selenio, ventajas del selenio, limitaciones del selenio, componentes del selenio y algunas preguntas frecuentes.

¿Qué es Selenium Webdriver?

Selenium es una tecnología o marco de código abierto a través del cual podemos automatizar aplicaciones basadas en web. Selenium admite pruebas de múltiples navegadores, también admite múltiples idiomas como Java, Ruby, Perl, Python. Admite diferentes plataformas múltiples como Windows, Linux, macOS, etc. como parte de la plataforma.

Breve historia sobre el selenio:

El selenio fue desarrollado inicialmente a partir de una herramienta interna por Jason Huggins en 2004 en ThoughtWorks.

Posteriormente en el año de 2007, Huggins se incorporó a la organización Google, y con otras como Jennifer Bevan, continuó con el diseño y desarrollo de una de las variaciones iniciales de Selenium llamada Selenio RC. Durante un período de tiempo similar, otra persona llamada Simon Stewart de ThoughtWorks desarrolló herramientas avanzadas de automatización del navegador web como WebDriver. 

En 2008, una persona llamada Philippe Hanrigou de ThoughtWorks ideó conceptos de automatización remota conocidos como “Selenium Grid”.

En 2009, en la Conferencia de Automatización de Pruebas de Google, se decidió fusionar los dos proyectos y se les dio el nombre de Selenium WebDriver o Selenium 2.0.

Ventajas de Selenium Webdriver:

A. Código abierto:

Selenium es una tecnología / marco de código abierto, por lo tanto, hay un gran apoyo de la comunidad disponible donde el alcance del desarrollo y la mejora es rápido y amplio, además, como su código abierto, puede implementar cualquier característica específica que necesite como parte de su trabajo y contribuir al Open comunidad de origen. 

B. Lenguaje de programación múltiple compatible:

El selenio es compatible con lenguajes ampliamente utilizados; viene con diferentes enlaces de lenguaje de programación, por lo que puede elegir su lenguaje favorable para trabajar con selenio según sus necesidades y experiencia.

Selenium proporciona soporte para los siguientes lenguajes de programación: 

  • Java 
  • C#
  • Perl
  • pitón
  • Rubí  
  • Javascript

C. Plataforma independiente:

Selenium es independiente de la plataforma, por lo que puede automatizar sus aplicaciones web en cualquier plataforma y cualquiera de los sistemas operativos, es decir, Windows, Linux, macOS, etc.

D. Capacidad de prueba entre navegadores

Selenium admite la capacidad de prueba entre navegadores para sus aplicaciones web; puede ejecutar su conjunto de pruebas escrito con Selenium en múltiples navegadores como Firefox, Chrome, IE, Safari, etc.

E. Capacidad de prueba entre dispositivos

Selenium Test Automation se utiliza para la automatización de pruebas de aplicaciones web móviles en varios dispositivos como Android, IOS. 

F. Ejecución remota o en la nube:

Selenium GRID le proporciona la función para ejecutar y controlar el script de prueba de automatización de su aplicación web en la nube al hacer que un sistema sea el nodo maestro y otro sistema como el nodo esclavo, los nodos esclavos se conectan a un nodo maestro y el nodo maestro monitorea al esclavo nodos, por lo que sus pruebas están en diferentes nodos esclavos con los diferentes sistemas operativos y diferentes navegadores como Chrome, Firefox, Internet Explorer, etc.

G. Capacidad de prueba paralela:

Con Selenium, puede lograr capacidades de prueba en paralelo automatizado, es decir, puede ejecutar su script de prueba o casos de prueba de automatización en el mismo navegador o en el mismo sistema operativo en paralelo. Esta función le ayuda a lograr un menor tiempo de ejecución para todo el conjunto de pruebas de automatización que tiene, y también puede probar la viabilidad y compatibilidad de su aplicación web con múltiples sistemas operativos y múltiples navegadores en paralelo.   

H. Compatibilidad con múltiples herramientas y tecnología de Framework y de terceros

El marco de Selenium se puede integrar fácilmente con varias tecnologías y marcos de terceros, como diferentes marcos de pruebas unitarias, es decir PruebaNg, JUnit, MbUnit, Nunit, etc., diferentes herramientas de compilación como Ant, Maven, Gradle, etc., herramientas de integración continua, es decir, Jenkins, diferentes herramientas de gestión de pruebas como Jira, testlink, etc., varias herramientas de generación de informes como Allure, Extent Informe, etc

Ejecución del navegador sin cabeza: 

Selenium Webdriver es compatible con el controlador de navegador sin interfaz gráfica de usuario para aplicaciones automatizadas. ejecución de casos de prueba, donde todos sus casos de prueba de automatización se ejecutan en modo de navegador sin cabeza, es decir, no se abre ningún navegador y la ejecución se vuelve ultrarrápida para que pueda completar sus scripts de prueba y la funcionalidad rápidamente en caso de lanzamiento y validaciones urgentes.

Básicamente puedes usar controlador de unidad html or conductor fantasma para la ejecución sin cabeza con Selenium.  

Desventajas del selenio:

  • Compatibilidad con aplicaciones nativas/basadas en Windows, no presente: 
    • Selenium se utiliza para automatizar la aplicación Web Bade, pero no proporciona soporte para aplicaciones nativas o aplicaciones basadas en Windows.
  • Automatización exhaustiva basada en imágenes: 
    • Selenium no proporciona un soporte exhaustivo para automatizar problemas o aplicaciones basados ​​en imágenes, aunque podemos utilizar algunas herramientas de terceros como Sikuli, soluciones basadas en tesseract ocr que se pueden integrar con Selenium para realizar el trabajo relacionado con las validaciones / operaciones de imágenes o extracciones y validaciones de datos de imagen, también tienen algunas limitaciones, como es posible que tenga problemas con las pruebas paralelas, la identificación de documentos escritos a mano y la validación de aquellos en el proceso de automatización de su aplicación si existen tales casos de uso.
  • Integración con herramientas de terceros: 
    • Una desventaja de la integración con múltiples herramientas de terceros con selenio es que su secuencia de comandos de automatización puede volverse más lenta en ocasiones.
  • Marco de selenio Desarrollo :
    • Diseñar y desarrollar un marco de automatización de pruebas avanzado con Selenium requiere mucha experiencia en selenio y no es demasiado sencillo construir un marco de automatización con múltiples herramientas junto con Selenium.
  • Problemas específicos del navegador: 
    • Es posible que se enfrente a algunos problemas específicos del navegador mientras trabaja con Selenium, especialmente con IE, a veces es posible que no pueda manejar acciones web como hacer clic, enviar teclas, etc., y el navegador puede quedar inactivo. Por lo tanto, debe tener conocimientos avanzados para manejar esas áreas mientras automatiza la aplicación construida en Bootstrap JS y la ejecuta en el navegador IE.
    • Además, es posible que tenga problemas de compatibilidad del navegador con las versiones de Selenium Webdriver; debe asegurarse de que está utilizando Firefox, Chrome o cualquier otro navegador compatible con el que esté trabajando con la versión de Selenium Webdriver.
  • Sin soporte oficial: 
    • Al igual que cualquier otra herramienta de código abierto, el selenium también es una herramienta de código abierto, lo que significa que no tendrá soporte oficial para sus problemas como cualquier herramienta de pago, aunque hay un gran apoyo de la comunidad disponible, puede trabajar con ellos con su declaración de problema. , pero eso puede llevar mucho tiempo.

Componentes de selenio: 

El selenio como herramienta tiene los componentes que se mencionan a continuación, que son: 

IDE de selenio:

  • Selenium IDE o el entorno de desarrollo integrado de Selenium es la versión más inicial de Selenium para la automatización de aplicaciones web.
  • Selenium IDE es una especie de herramienta de grabación y reproducción, que puede usar como un complemento del navegador y registrar su acción web en sus aplicaciones y que puede guardarse como un script y luego puede ejecutar el mismo script grabado para ejecutar y hacer validaciones.
  • Pero tiene pocas limitaciones como:
    • Debe ejecutar el script grabado, modificar el script no es tan flexible o tampoco puede diseñar su caso de uso y scripts en su propio enfoque independiente.
    • La ejecución es de naturaleza muy lenta.
    • Mayormente es compatible con Firefox, aunque hay algunos ajustes que puede hacer para ejecutar el script grabado en otros navegadores como Google Chrome.
    • no se admite la ejecución en paralelo.
    • Las pruebas móviles no son compatibles.
    • La generación de informes no es muy buena.
  • En realidad, es una versión muy preliminar de Selenium; al usarla, puede realizar una automatización de pruebas muy limitada para sus aplicaciones web.

Selenio RC

  • Selenium Remote Control es la próxima versión de Selenium y muy a menudo se le conoce como Selenium 1.0.

Cómo funciona Selenium RC internamente:

Selenium RC consta de dos componentes principales, como Selenium Server, Selenium Client.

Selenium Server inicia los navegadores y ejecuta los comandos de selenium que ha escrito como un script de automatización de prueba mediante el uso de bibliotecas cliente de Selenium disponibles en diferentes idiomas.

Selenium Server convierte los comandos / scripts de prueba en algo llamado comandos de Selenese y actúa como un proxy HTTP.

Selenium Server interactúa con el motor del navegador web y realiza la operación web que está intentando automatizar como parte de los casos de prueba para la aplicación bajo prueba.

Pasos para usar Selenium RC: 

  • Instale el servidor Selenium-RC.
    • Cree un proyecto utilizando su elección de lenguaje de programación y el lenguaje específico del controlador del navegador.
  • Instalar el servidor de selenio
    • Puede configurar Selenium Server simplemente descargue el archivo selenium-server.jar y ejecútelo en su sistema usando el siguiente comando: 
    • java -jar selenio-servidor.jar
  • Escriba el script usando las bibliotecas de cliente de Selenium y lo mismo usando el servidor de Selenium.

Limitaciones de Selenium RC:

  • En el control remoto de Selenium, el controlador de automatización y el navegador se vuelven un poco más lentos por lo que el motor del navegador no interactúa directamente, sino que Selenium RC inyecta javascript en el motor del navegador, también conocido como Selenium Core.
  • El servidor que debe estar en funcionamiento antes y durante la ejecución del script de prueba.
  • Las acciones web avanzadas no se pueden automatizar ni manejar con Selenium RC, como el movimiento del mouse, el doble clic, la entrada desde el teclado, etc., a diferencia de Selenium Webdriver.
  • Selenium RC no admite las pruebas de aplicaciones móviles.
  • Selenium RC depende del navegador real para ejecutar el script de prueba de Automatización, y no es compatible con el navegador sin cabeza como HTMLUnitDriver o GHostDriver, etc. a diferencia de Selenium Webdriver.

Selenio WebDriver:

Selenium Webdriver es la versión avanzada entre los componentes de Selenium, que es muy robusta y también admite la versión avanzada de interacciones web y tampoco interactúa con el navegador a través de Javascript a diferencia de Selenium RC y también tiene soporte para pruebas de aplicaciones móviles. A menudo se lo conoce como parte de Selenium 2.0.

WebDriver puede manejar elementos dinámicos y también admite la ejecución en paralelo con varios navegadores diferentes.

Tendremos una discusión detallada en los próximos segmentos.

Rejilla de selenio: 

Selenium GRID es otro componente de Selenium a través del cual puede tener la ejecución remota de su script de prueba de automatización creando nodos maestro-esclavo. Selenium GRID admite pruebas paralelas en el mismo navegador, así como en varios navegadores. 

Tendremos más discusión sobre Selenium GRID en las próximas secciones.

Controlador web 3.0

Selenium 3.0 es la última versión de los componentes de Selenium, que es básicamente la combinación de WebDriver 2.0 y la evolución de GRID 3.

En este próximo segmento, vamos a discutir el Selenium WebDriver Architecture en detalley, finalmente, representa cómo funciona el selenio internamente,.

Arquitectura de Selenium Webdriver  :

Hay cinco atributos o componentes principales como parte de la arquitectura de Selenium Webdriver: 

    

  • Selenium Client Library o enlaces de lenguaje de programación de Selenium
  • Protocolo WebDriver o protocolo JSON Wire a través de HTTP
  • Controladores del navegador
  • Motor de navegadores
  • Motor de renderizado del navegador
Arquitectura de Selenium Webdriver
Selenium Tutorial-Selenium Webdriver arquitectura

Bibliotecas cliente de Selenium o enlaces de lenguaje de programación: 

Selenium proporciona enlaces de diferentes idiomas, es decir, las bibliotecas cliente para admitir varios idiomas diferentes como parte de su script de prueba de Automation Development and Automation. Por ejemplo, Selenium con C #, Selenium con Java, Selenium con Python, etc.

Protocolo WebDriver o PROTOCOLO JSON WIRE:

JSON, que básicamente significa notación de objetos JavaScript. Este protocolo también se conoce como protocolo WebDriver, utilizado para la transferencia de datos servidor-cliente a través de la web. Cada controlador de navegador (por ejemplo, FirefoxDriver, ChromeDriver, etc.) tiene su propio servidor HTTP y utiliza este protocolo para transferir datos a través de Rest Webservices en forma de solicitud HTTP y respuesta HTTP.

 Controladores del navegador:

Cada navegador tiene su propio controlador de navegador. Los controladores del navegador establecen comunicación con el navegador respectivo a través del motor del navegador. 

Cuando se ejecuta el script de Automatización, se comunica directamente con los controladores del navegador y, finalmente, con el navegador respectivo. La solicitud y la respuesta se transfieren a través de una solicitud HTTP y una respuesta HTTP.

Motor de navegadores:

Cada navegador tiene su propio motor de navegador; El motor del navegador básicamente funciona como una capa intermedia entre la interfaz de usuario y el motor de renderizado.

Motor de renderizado del navegador: 

El motor de renderizado del navegador es responsable de mostrar el documento solicitado al renderizar los elementos específicos requeridos para la solicitud-respuesta y los datos.

Selenium Webdriver Architecture y funcionalidad de trabajo en pocas palabras :

Selenium-WebDriver invoca el navegador directamente utilizando el soporte nativo de cada navegador para la automatización y su motor JavaScript. La forma en que se realizan estas llamadas y las funciones que admiten dependen del navegador que esté utilizando.

No inyecta JavaScript como Selenium-RC cuando se carga el navegador.

Se produce la siguiente incidencia al ejecutar el script Webdriver:

  •  Hacemos la secuencia de comandos de automatización utilizando cualquier enlace de lenguaje (Java / C #, etc.), y activa la API de WebDriver mientras el script está en ejecución.
  •   El script y eventualmente los comandos (por ejemplo, driver.findElement (By.id ("idName"))) son siendo convertido a JavaScript internamente.
  •   Usando Browser Engine, es de nuevo convertido de nuevo a JSON, que es una especie de par clave-valor.
  •   Después de obtener el valor respectivo de la clave respectiva, identifica los respectivos WebElements y realiza las respectivas acciones del usuario (como hacer clic, enviar claves, etc.).
  •   Toda la comunicación se realiza mediante un Llamada al protocolo JSON-Wire o Webdriver, y las comunicaciones se realizan a través de HTTP en forma de Rest API como una solicitud HTTP y una respuesta HTTP.

Preguntas frecuentes sobre selenio: 

¿Cuáles son los tipos de API de WebDriver disponibles en Selenium?

Selenium Webdriver es una interfaz y tiene diferentes enlaces de lenguaje para diferentes lenguajes de programación como Java, C #, python, etc. 

Selenium Webdriver tiene principalmente dos variantes diferentes, como: 

  • Selenium Web controlador local.
  • Controlador web Selenium Remoto. 

El controlador web de Selenium Local usa la API para trabajar con el enlace de idioma específico, y puede trabajar con estos con su ejecución local, mientras que, por otro lado, si desea ejecutar sus scripts de prueba de automatización en Remote, entonces debe usar el API de controladores web remotos de Selenium.

Explique ¿Cuáles son los escenarios que no podemos automatizar usando Selenium?

Selenium no proporciona una forma de Automatizar las siguientes áreas de aspectos de la aplicación, que son: 

  • Pruebas de rendimiento de la Aplicación
  • Pruebas de seguridad de las aplicaciones.
  • Procesamiento y automatización basados ​​en imágenes
  • Automatización basada en captcha.
  • Escenarios de transmisión de video.
  • Aplicación nativa o aplicaciones basadas en ventanas.
  • Aplicaciones de transmisión

¿Diferencia entre Selenium 2.0 y Selenium 3.0?

  • Para Selenium 2.0, el requisito mínimo es Java 1.7, por otro lado, para Selenium 3.0, la versión mínima requerida de Java es 1.8
  • Selenium 3.0 requiere GeckOdriver para la versión de Firefox superior a 47, pero este no es el caso de Selenium 2.0 
  • Selenium 3.0 es compatible con el navegador moderno como Edge, Safari, etc. pero, por otro lado, para Selenium 2.0, controlador de navegador para Mozilla, Chromedriver, IE, desarrollado por desarrolladores de Selenium.
  • En Selenium 3, se eliminó la compatibilidad con las pruebas de automatización móvil, es decir, AndroidDriver y iPhoneDriver, y debe usar herramientas como Appium para pruebas de automatización móvil, que no es el caso de Selenium 2.0.
  • Selenium 3.0 no admite el controlador Headless, es decir, HTMLUnitWebDriver, pero Selenium 2.0 admite la ejecución Headless, es decir, con HTMLUnitDriver o ghostdriver.
  • Dentro de Selenium 3, Selenium WebDriver se ha convertido en el estándar W3C; por otro lado, Selenium Webdriver en Selenium 2.0 no pertenece al estándar W3C.

Conclusión : Con esto completamos el primer segmento de Libro negro tutorial de selenio cubierta ¿Qué es Selenium, Selenium Webdriver? Arquitectura,Descripción general de Selenium, Pros y contras de Selenium, En el próximo segmento de Tutorial de selenio módulo 2 discutiremos sobre la instalación de Selenium, es decir, la configuración, los comandos de Selenium y otros temas básicos, intermedios y avanzados de Selenium

Deja un comentario