selenio | |
---|---|
Tipo de | pruebas de software |
Escrito en | Java |
Sistema operativo | Microsoft Windows , GNU / Linux , Apple Mac OS |
ultima versión | 4.5.0 (28 de septiembre de 2022 ) |
Licencia | Licencia Apache 2.0 |
Sitio web | selenio.dev |
Selenium WebDriver es una herramienta para automatizar las acciones del navegador web. En la mayoría de los casos, se usa para probar aplicaciones web , pero no se limita a esto. En particular, se puede utilizar para resolver tareas rutinarias de administración del sitio o recibir datos regularmente de varias fuentes (sitios). Raramente usado, pero importante.
En junio de 2004 [1], el desarrollador Jason Huggins escribió una biblioteca de JavaScript llamada "JavaScriptTestRunner" (ahora conocida como "Selenium Core") para ejecutar pruebas en el navegador . En ese momento, Huggins trabajaba en la oficina de ThoughtWorks en Chicago , y la biblioteca creada se utilizó para probar un sitio escrito en Python usando el sistema de administración de contenido (CMS) Plone . Huggins fue asistido por Paul Gross y Jie Tina Wang de ThoughtWorks. Más tarde, otros desarrolladores y probadores de la empresa se sumaron al desarrollo.
El nombre "Selenium" ("selenium" en inglés - selenium ) comenzó a usarse después de que Huggins bromeara en uno de sus correos electrónicos (email) sobre un proyecto de la competencia llamado "Mercury Interactive QuickTest Professional" ("mercury" en traducido del inglés - mercurio ), escribiendo que puede recuperarse del envenenamiento por mercurio tomando selenio con alimentos [2] .
Paul Hammant (empleado de ThoughtWorks) propuso abrir el código fuente de la biblioteca Selenium Core, brindar la capacidad de escribir scripts en cualquier lenguaje de programación y ejecutar scripts de forma remota. Para implementar esto último, fue necesario sortear las restricciones implementadas por el navegador para cumplir con la misma política de origen . Aslak Hellesoy y Mike Melia de ThoughtWorks reescribieron una página para eludir la regla. Paul Hammant escribió los programas Java que implementan el servidor y el cliente. Aslak Hellesoy y Obie Fernandez reescribieron el cliente de Ruby como una biblioteca.
ThoughtWorks, que tiene oficinas en todo el mundo, comenzó a usar Selenium en proyectos comerciales. Mike Williams, Darrell Deboer y Darren Cotterill continuaron con el desarrollo.
Los desarrolladores de BEA Systems, Inc., Dan Fabulich y Nelson Sproul reescribieron el código del servidor utilizando código del proyecto Jetty (servidor HTTP en Java) para implementar el proxy HTTP . El nuevo servidor se conoció como "Selenium Remote Control" o "Selenium RC". Selenium RC fue continuado por Pat Lightbody, Dan Fabulich y Nelson Sproul.
En diciembre de 2004 se abrió el código fuente del proyecto Selenium.
En 2005, en una reunión de desarrolladores, Dan Fabulich y Nelson Sproul (con la ayuda de Pat Lightbody) propusieron adoptar un conjunto de parches que convertirían a "Selenium RC" en el producto conocido hoy como "Selenium 1.0". En la misma reunión, la gestión del proyecto se asignó a un comité, con los desarrolladores Jason Huggins y Paul Hammant representando a ThoughtWorks en el comité que se formó.
En el verano de 2006, un equipo de desarrollo formado por Wang Peng Chao, Huang Liang, Xiong Jie y otros, dirigido por Mike Williams en la oficina de ThoughWorks en China, desarrolló la biblioteca Selenium Core. El equipo ha implementado las funciones disponibles en Selenium 1.0.
En 2007, Jason Huggins se unió a Google, se convirtió en miembro del (entonces secreto) equipo de soporte de Selenium y continuó trabajando en Selenium RC con otros desarrolladores (como Jennifer Bevan). Los representantes de Google anunciaron por primera vez el uso de Selenium en la Google Test Automation Conference (GTAC-2007) [3] celebrada en Nueva York el 23 y 24 de agosto de 2007. Más tarde, Jennifer Bevan tuvo la oportunidad de realizar cambios en el código del proyecto Selenium.
Haw-bin Chai de Chicago creó parches que agregaron la funcionalidad XPath e implementaron una extensión llamada "Elemento de interfaz de usuario", después de lo cual fue invitado al equipo de desarrollo de Selenium en 2007.
Simon Stewart, entonces en ThoughtWorks, desarrolló una herramienta llamada WebDriver. WebDriver lanzó navegadores y trabajó con ellos, aunque no estaba limitado por las capacidades proporcionadas por JavaScript, por lo tanto, era superior en capacidades a Selenium Core. Pero admitir cada navegador requería escribir código. En 2007, Simon Stewart presentó su desarrollo en la conferencia GTAC-2007. En 2009, los desarrolladores se reunieron en la conferencia GTAC-2009 y decidieron fusionar las bases de código de los proyectos Selenium y WebDriver. De 2007 a 2012, Simon Stewart trabajó en Google y luego en Facebook, dedicando parte de su tiempo a hacer que WebDriver fuera compatible con Selenium RC. El nuevo producto se llamó "Selenium WebDriver" o "Selenium 2.0" [4] .
En 2008, Philippe Hanrigou, entonces en ThoughtWorks, creó el proyecto Selenium Grid. Selenium Grid es un proyecto de código abierto que proporciona programas diseñados para ejecutar secuencias de comandos de Selenium RC en varias computadoras al mismo tiempo. Se ejecutaron diferentes scripts en varias computadoras para reducir su tiempo de ejecución. Las capacidades de "Selenium Grid" coincidieron con las capacidades de un producto similar, pero cerrado e interno, de Google. Pat Lightbody era propietaria de un sitio llamado "Control de calidad alojado" que le permite obtener capturas de pantalla de páginas web , vendió el sitio a Gomez, Inc.
Shinya Kasatani de Japón ha creado una extensión para el navegador Firefox llamada "Selenium IDE" que le permite grabar, guardar y reproducir pruebas. La prórroga no estaba restringida por la misma política de origen .
Selenium WebDriver es principalmente un conjunto de bibliotecas para varios lenguajes de programación. Estas bibliotecas se utilizan para enviar solicitudes HTTP al controlador (de ahí el nombre WebDriver), utilizando el protocolo JsonWireProtocol [5] , que indican la acción que debe realizar el navegador dentro de la sesión actual. Ejemplos de tales comandos pueden ser comandos para encontrar elementos mediante un localizador, seguir enlaces, analizar el texto de una página/elemento, presionar botones o seguir enlaces en una página de sitio web . Hay enlaces oficiales de la biblioteca a lenguajes de programación populares y de aficionados. Por ejemplo, la biblioteca de soporte del lenguaje PHP no es oficial y está siendo desarrollada por Facebook [6] .
El proyecto Selenium y la comunidad son compatibles con los navegadores Microsoft Internet Explorer , Google Chrome , Mozilla Suite y Mozilla Firefox que ejecutan los sistemas operativos Microsoft Windows , Linux y Apple Macintosh .
Selenium, a partir de la versión 3.x, comenzó a requerir un controlador independiente para funcionar con el navegador Firefox: GeckoDriver , anteriormente llamado Marionette [7]
Como parte del proyecto Selenium, se lanza la herramienta Selenium IDE , una extensión para los navegadores Firefox y Chrome , que es una biblioteca Selenium con una interfaz gráfica (GUI) creada con XUL . La extensión le permite grabar, guardar y reproducir scripts para probar páginas web. Los scripts se guardan en formato HTML como una tabla.
Lista de navegadores soportados por los desarrolladores del proyecto Selenium y/o la comunidad [8] :
Navegador | Sistema operativo | Desarrollador |
---|---|---|
Cromo / Google Chrome | Windows / mac OS / Linux | |
Firefox | Windows/mac OS/Linux | Mozilla |
Borde de Microsoft | ventanas 10 | microsoft |
explorador de Internet | ventanas | Proyecto Selenio |
safari | macOS El Capitán y más reciente | Manzana |
Ópera | Windows/mac OS/Linux | Ópera |
También es posible su uso con navegadores sin interfaz gráfica - HtmlUnit y PhantomJS , aunque este último no es recomendable, ya que este producto no ha sido actualizado y soportado por su desarrollador desde 2017 y el correspondiente La funcionalidad ha estado presente en el navegador desde ese momento Google Chrome [8] .