Articulo de referencia

Selenium (software)

{{cite web |title=Downloads |url=https://www.selenium.dev/downloads/ |website=Selenium}} "},"operating system":{"wt":"[[Cross-platform]]"},"platform":{"wt":""},"size":{"wt":""},...

Selenium es un proyecto paraguas de código abierto para una variedad de herramientas y bibliotecas destinadas a brindar soporte a la automatización de navegadores . [ 3 ] Proporciona una herramienta de reproducción para crear pruebas funcionales en la mayoría de los navegadores web modernos , sin necesidad de aprender un lenguaje de scripting de pruebas (Selenium IDE). [ 4 ] También proporciona un lenguaje específico de dominio de prueba (Selenese) para escribir pruebas en varios lenguajes de programación populares, incluidos JavaScript ( Node.js ), C# , Groovy , Java , Perl , PHP , Python , Ruby y Scala . Existe un envoltorio de C++ en su página de git, pero no se ha actualizado en años. Selenium se ejecuta en Windows , Linux y macOS . Es software de código abierto publicado bajo la Licencia Apache 2.0 .

Historia

Selenium fue desarrollado originalmente por Jason Huggins en 2004 como una herramienta interna en ThoughtWorks . [ 5 ] Posteriormente, otros programadores y evaluadores de ThoughtWorks se unieron a Huggins, antes de que Paul Hammant se incorporara al equipo y dirigiera el desarrollo del segundo modo de operación que más tarde se convertiría en "Selenium Remote Control" (RC). La herramienta se publicó como código abierto ese mismo año.

En 2005, Dan Fabulich y Nelson Sproul (con la ayuda de Pat Lightbody) hicieron una oferta para aceptar una serie de parches que transformarían Selenium-RC en lo que más se hizo famoso. En la misma reunión, la dirección de Selenium como proyecto continuaría a cargo de un comité, con Huggins y Hammant como representantes de ThoughtWorks. [ 6 ]

En 2007, Huggins se unió a Google . Junto con otros, como Jennifer Bevan, continuó con el desarrollo y la estabilización de Selenium RC. Al mismo tiempo, Simon Stewart, de ThoughtWorks, desarrolló una herramienta superior de automatización de navegadores llamada WebDriver. En 2009, tras una reunión entre los desarrolladores en la Conferencia de Automatización de Pruebas de Google, se decidió fusionar los dos proyectos y denominar al nuevo proyecto Selenium WebDriver o Selenium 2.0. [ 7 ]

En 2008, Philippe Hanrigou (entonces en ThoughtWorks) creó "Selenium Grid", una plataforma que permite ejecutar múltiples pruebas de Selenium simultáneamente en cualquier número de sistemas locales o remotos, minimizando así el tiempo de ejecución. Grid ofrecía, como software de código abierto, una funcionalidad similar a la nube privada de Google para Selenium RC. Pat Lightbody ya había creado una nube privada para "HostedQA", que posteriormente vendió a Gomez, Inc.

El nombre Selenium proviene de una broma que Huggins hizo en un correo electrónico, burlándose de un competidor llamado Mercury , diciendo que la intoxicación por mercurio se puede curar tomando suplementos del elemento selenio . Los demás que recibieron el correo electrónico adoptaron el nombre y lo popularizaron. [ 8 ]

Componentes

Selenium se compone de varios componentes, cada uno de los cuales desempeña un papel específico para ayudar al desarrollo de la automatización de pruebas de aplicaciones web . [ 9 ]

IDE de Selenio

Selenium IDE es un entorno de desarrollo integrado (IDE) completo para pruebas de Selenium. Está implementado como un complemento de Firefox y como una extensión de Chrome . Permite grabar, editar y depurar pruebas funcionales. Anteriormente se conocía como Selenium Recorder. Selenium IDE fue creado originalmente por Shinya Kasatani y donado al proyecto Selenium en 2006. Selenium IDE comenzó a recibir mantenimiento activo en 2018. [ 10 ] [ 11 ] [ 12 ] [ 13 ]

Los scripts se pueden grabar automáticamente y editar manualmente, lo que proporciona soporte para autocompletado y la posibilidad de reorganizar comandos rápidamente. Los scripts se graban en Selenese , un lenguaje de scripting de prueba específico para Selenium. Selenese proporciona comandos para realizar acciones en un navegador (hacer clic en un enlace, seleccionar una opción) y para recuperar datos de las páginas resultantes. Selenese sirve como lenguaje para componer comandos de Selenium, que se utilizan en las pruebas de aplicaciones web. Estos comandos, adaptados a las etiquetas HTML de los elementos de la interfaz de usuario, facilitan la verificación de su existencia. Guían a Selenium para que comprenda las acciones u operaciones específicas que debe ejecutar.

API de cliente de Selenium

Como alternativa a escribir pruebas en Selenese, también se pueden escribir en varios lenguajes de programación. Estas pruebas se comunican con Selenium mediante llamadas a métodos de la API de cliente de Selenium. Actualmente, Selenium ofrece API de cliente para Java , C# , Ruby , JavaScript , R y Python .

Control remoto Selenium

Selenium Remote Control (RC) es un servidor, escrito en Java , que acepta comandos del navegador a través de HTTP . RC permite escribir pruebas automatizadas para una aplicación web en cualquier lenguaje de programación, lo que facilita la integración de Selenium en los marcos de pruebas unitarias existentes. Para simplificar la escritura de pruebas, el proyecto Selenium ofrece actualmente controladores de cliente para PHP , Python , Ruby , .NET , Perl y Java . El controlador de Java también se puede usar con JavaScript (a través del motor Rhino ). Se necesita una instancia del servidor Selenium RC para ejecutar un caso de prueba HTML, lo que significa que el puerto debe ser diferente para cada ejecución paralela. Sin embargo, para los casos de prueba Java/PHP, solo se necesita una instancia de Selenium RC ejecutándose continuamente. [ 14 ]

Selenium Remote Control fue una refactorización de Driven Selenium o Selenium B diseñada por Paul Hammant, acreditado junto con Jason como cocreador de Selenium. La versión original lanzaba directamente un proceso para el navegador en cuestión, desde el lenguaje de prueba Java, .NET, Python o Ruby. El protocolo de comunicación (llamado 'Selenese' en su momento) se reimplementó en cada puerto de lenguaje. Después de la refactorización de Dan Fabulich y Nelson Sproul (con la ayuda de Pat Lightbody) había un proceso demonio intermedio entre el script de prueba de conducción y el navegador. Los beneficios incluían la capacidad de controlar navegadores remotos y la reducción de la necesidad de portar cada línea de código a un conjunto cada vez mayor de lenguajes. Selenium Remote Control reemplazó por completo la línea de código de Driven Selenium en 2006. El patrón de navegador para 'Driven'/'B' y 'RC' era respuesta/solicitud, que posteriormente se conoció como Comet .

Selenium RC fue durante mucho tiempo el marco de pruebas insignia de todo el proyecto Selenium. Selenium RC es la primera y principal herramienta de pruebas web automatizadas que permitió a los usuarios adoptar su lenguaje de programación preferido. [ 15 ] [ 16 ]

Con el lanzamiento de Selenium 2, Selenium RC ha quedado oficialmente obsoleto en favor de Selenium WebDriver.

Selenium WebDriver

El núcleo de Selenium es Selenium WebDriver, una interfaz para escribir instrucciones que funcionan indistintamente en diferentes navegadores. Es el sucesor de Selenium RC. Selenium WebDriver acepta comandos (enviados en Selenese o a través de una API de cliente) y los envía a un navegador. Esto se implementa mediante un controlador de navegador específico, que envía comandos al navegador y recupera los resultados. La mayoría de los controladores de navegador inician y acceden a una aplicación de navegador (como Firefox , Google Chrome , Internet Explorer , Safari o Microsoft Edge ); también existe un controlador de navegador HtmlUnit , que simula un navegador utilizando el navegador sin interfaz gráfica HtmlUnit. Desde Selenium 4 y la versión 109 de Google Chrome, el modo sin interfaz gráfica se admite mediante una implementación nativa del navegador, en la que Chrome opera sin una interfaz gráfica de usuario, pero con un comportamiento de renderizado y ejecución idéntico al del modo normal. [ 17 ]

A diferencia de Selenium 1, donde el servidor de Selenium era necesario para ejecutar pruebas, Selenium WebDriver no requiere un servidor especial para ello. En su lugar, WebDriver inicia directamente una instancia del navegador y la controla. Sin embargo, Selenium Grid puede utilizarse con WebDriver para ejecutar pruebas en sistemas remotos (véase más abajo). Siempre que sea posible, WebDriver utiliza funcionalidades nativas del sistema operativo en lugar de comandos JavaScript del navegador para controlarlo. Esto evita problemas derivados de las sutiles diferencias entre los comandos nativos y los de JavaScript, incluidas las restricciones de seguridad. [ 18 ]

A principios de 2012, Simon Stewart (inventor de WebDriver), que entonces trabajaba en Google, y David Burns de Mozilla estaban negociando con el W3C para convertir WebDriver en un estándar de Internet. En julio de 2012, se publicó el borrador de trabajo y la recomendación se emitió en junio de 2018. [ 19 ] Selenium WebDriver (Selenium 2.0) está completamente implementado y es compatible con JavaScript ( Node.js ), Python , Ruby , Java , Kotlin y C# . A partir de 2021, Selenium 4 es una versión candidata. [ 20 ]

Pitón

from selenium.webdriver import Firefox from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.expected_conditions import presence_of_element_located from selenium.webdriver.remote.webelement import WebElementif __name__ == "__main__" : # Este ejemplo requiere Selenium WebDriver 3.13 o posterior con Firefox () como driver : wait : WebDriverWait = WebDriverWait ( driver , 10 ) driver . get ( "https://google.com/ncr" ) driver . find_element ( By . NAME , "q" ) . send_keys ( f "cheese { Keys . RETURN } " ) first_result : WebElement = wait . until ( presence_of_element_located (( By . CSS_SELECTOR , "h3" ))) print ( first_result . get_attribute ( "textContent" ))

Java

paquete org.wikipedia.examples ;import java.time.Duration ;import org.openqa.selenium.By ; import org.openqa.selenium.Keys ; import org.openqa.selenium.WebDriver ; import org.openqa.selenium.WebElement ; import org.openqa.selenium.firefox.FirefoxDriver ; import org.openqa.selenium.support.ui.WebDriverWait ; import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated ;public class HelloSelenium { public static void main ( String [] args ) { try ( WebDriver driver = new FirefoxDriver ()) { WebDriverWait wait = new WebDriverWait ( driver , Duration . ofSeconds ( 10 )) driver . get ( "https://google.com/ncr" ); driver . findElement ( By . name ( "q" )). sendKeys ( "cheese" + Keys . ENTER ); WebElement firstResult = wait . until ( presenceOfElementLocated ( By . cssSelector ( "h3" ))); System . out . println ( firstResult . getAttribute ( "textContent" )); driver . quit (); } catch ( Exception e ) { System . err . printf ( "Error capturado: %s%n" , e . getMessage ()); } } }

DO#

espacio de nombres Wikipedia.Ejemplos ;usando OpenQA.Selenium ; usando OpenQA.Selenium.Firefox ; usando OpenQA.Selenium.Support.UI ;public class HelloSelenium { static void Main ( string [] args ) { using ( IWebDriver driver = new FirefoxDriver ()) { WebDriverWait wait = new ( driver , TimeSpan . FromSeconds ( 10 )); driver . Navigate (). GoToUrl ( "https://www.google.com/" ); driver . FindElement ( By . Name ( "q" )). SendKeys ( $"cheese{Keys.Enter}" ); wait . Until ( webDriver => webDriver . FindElement ( By . CssSelector ( "h3" )). Displayed ); IWebElement firstResult = driver . FindElement ( By . CssSelector ( "h3" )); Console . WriteLine ( firstResult . GetAttribute ( "textContent" )); } } }

Red de selenio

Selenium Grid es un servidor que permite a las pruebas usar instancias de navegadores web que se ejecutan en máquinas remotas. Con Selenium Grid, un servidor actúa como centro neurálgico. Las pruebas se conectan al centro para obtener acceso a las instancias del navegador. El centro dispone de una lista de servidores que proporcionan acceso a dichas instancias (nodos WebDriver) y permite a las pruebas utilizarlas. Selenium Grid permite ejecutar pruebas en paralelo en varias máquinas y gestionar de forma centralizada las diferentes versiones y configuraciones del navegador (en lugar de hacerlo en cada prueba individual).

La capacidad de ejecutar pruebas en instancias remotas del navegador es útil para distribuir la carga de las pruebas entre varias máquinas y para ejecutarlas en navegadores que se ejecutan en diferentes plataformas o sistemas operativos. Esto último es particularmente útil en los casos en que no todos los navegadores que se utilizarán para las pruebas pueden ejecutarse en la misma plataforma. [ 21 ]

Véase también

Referencias

  1. "Versión 4.46.0" . 11 de julio de 2026. Consultado el 11 de julio de 2026 .
  2. "Descargas" . Selenium .
  3. "El proyecto de automatización del navegador con Selenium" . selenium.dev . 16 de marzo de 2020. Consultado el 1 de noviembre de 2021 .
  4. ^ Abdullaiev, OA; Ibrahimova, LV (2020). "Revisión del software de prueba: software Selenium" (PDF) . Universidad técnica nacional vinícola . УДК 004.457.
  5. "Acerca de Selenium" .
  6. "Historia de Selenium" . www.selenium.dev . Consultado el 11 de agosto de 2021 .
  7. "El Proyecto Selenio" . thenewcircle.com . NewCircle . Consultado el 29 de junio de 2014 .
  8. Krill, Paul (6 de abril de 2011). "Conjunto de pruebas de aplicaciones web Selenium de código abierto para iPhone y Android" . InfoWorld . Archivado del original el 5 de mayo de 2011. Recuperado el 9 de mayo de 2012. Selenium recibió ese nombre porque Huggins, insatisfecho con las herramientas de prueba disponibles en el mercado, buscaba un nombre que posicionara el producto como una alternativa al software de pruebas comercial Mercury Interactive QuickTest Professional. El nombre, Selenium, fue seleccionado porque los suplementos minerales de selenio sirven como cura para la intoxicación por mercurio, explicó Huggins.
  9. Moizuddin, Khaja (7 de junio de 2018). "Componentes de la herramienta de automatización Selenium" . dzone.com . DevOps Zone . Consultado el 10 de julio de 2019 .
  10. "¡Ha vuelto! Selenium IDE renace con Dave Haeffner" . testingpodcast.com . 24 de diciembre de 2018.
  11. Dave, Tour de (6 de agosto de 2018). "¡Selenium IDE ha muerto, viva Selenium IDE!" . Blog oficial de Selenium IDE . Consultado el 27 de noviembre de 2019 a través de seleniumhq.wordpress.com.
  12. Colantonio, Joe (27 de noviembre de 2018). "El impresionante regreso de Selenium IDE" . testguild.com . Consultado el 27 de noviembre de 2019 .
  13. Sargent, Al (19 de marzo de 2019). "Lista de nuevas características de Selenium IDE" . applitools.com . Consultado el 18 de octubre de 2021 .
  14. "Control remoto con Selenium" . seleniumhq.org . Consultado el 13 de noviembre de 2019 .
  15. "Selenium 1 (Selenium RC) :: Documentación para Selenium" . www.selenium.dev . Consultado el 20 de diciembre de 2020 . 
  16. sparkdatabox_author (16 de octubre de 2019). "Selenium | Spark Databox" . Consultado el 20 de diciembre de 2020 .{{cite web}}: |last=tiene nombre genérico ( ayuda )
  17. "Sin cabeza se va" .
  18. "La arquitectura de las aplicaciones de código abierto: Selenium WebDriver" . aosabook.org . Consultado el 7 de febrero de 2016 .
  19. Smith, Michael (5 de junio de 2018). "WebDriver avanza hacia la recomendación del W3C" . Blog del W3C . Consultado el 10 de septiembre de 2018 .
  20. "Descargas" . selenium.dev . Consultado el 29 de septiembre de 2021 .
  21. "Selenium Grid" . El proyecto de automatización de navegadores Selenium . Consultado el 9 de septiembre de 2020 .
  • Sitio web oficialEdita esto en Wikidata