stringtranslate.com

Selenio (software)

Selenium es un proyecto paraguas de código abierto para una gama de herramientas y bibliotecas destinadas a respaldar la automatización del navegador . [3] Proporciona una herramienta de reproducción para crear pruebas funcionales en la mayoría de los navegadores web modernos , sin la necesidad de aprender un lenguaje de programación de pruebas (Selenium IDE). [4] También proporciona un lenguaje específico del 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 . Selenium se ejecuta en Windows , Linux y macOS . Es un software de código abierto publicado bajo la Licencia Apache 2.0 .

Selenium es un marco de automatización de código abierto para aplicaciones web que permite a los evaluadores y desarrolladores automatizar las interacciones del navegador y realizar pruebas funcionales. Con herramientas versátiles como WebDriver, Selenium admite varios lenguajes de programación y facilita las pruebas entre navegadores, lo que lo convierte en la opción ideal para una automatización web eficiente y escalable.

Historia

Selenium fue desarrollado originalmente por Jason Huggins en 2004 como una herramienta interna en ThoughtWorks . [5] Más tarde, a Huggins se unieron otros programadores y evaluadores en ThoughtWorks, antes de que Paul Hammant se uniera al equipo y dirigiera el desarrollo del segundo modo de operación que luego se convertiría en "Selenium Remote Control" (RC). La herramienta se convirtió en código abierto ese 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 a Selenium-RC en lo que se hizo famoso. En la misma reunión, la dirección de Selenium como proyecto continuaría en forma de 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 del navegador llamada WebDriver. En 2009, después de una reunión entre los desarrolladores en la Google Test Automation Conference, se decidió fusionar los dos proyectos y llamar al nuevo proyecto Selenium WebDriver, o Selenium 2.0. [7]

En 2008, Philippe Hanrigou (en ese entonces en ThoughtWorks) creó "Selenium Grid", que proporciona un centro 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 de las pruebas. Grid ofrecía, como código abierto, una capacidad similar a la nube interna/privada de Google para Selenium RC. Pat Lightbody ya había creado una nube privada para "HostedQA" que luego vendió a Gomez, Inc.

El nombre Selenium proviene de una broma que Huggins hizo en un correo electrónico, en la que se burlaba de un competidor llamado Mercury y decía que se puede curar el envenenamiento por mercurio tomando suplementos de selenio. Los demás que recibieron el correo electrónico adoptaron el nombre y lo utilizaron. [8]

Componentes

Selenium se compone de varios componentes, cada uno de los cuales asume una función específica 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. Se implementa 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 compatibilidad con el autocompletado y la capacidad de mover comandos rápidamente. Los scripts se graban en Selenese , un lenguaje de scripts de prueba especial 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 la prueba 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 comprender las acciones u operaciones específicas que se deben ejecutar.

API de cliente de Selenium

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

Control remoto de selenio

Selenium Remote Control (RC) es un servidor, escrito en Java , que acepta comandos para el navegador a través de HTTP . RC permite escribir pruebas automatizadas para una aplicación web en cualquier lenguaje de programación, lo que permite una mejor integración de Selenium en los marcos de pruebas unitarias existentes. Para facilitar la escritura de pruebas, el proyecto Selenium proporciona actualmente controladores de cliente para PHP , Python , Ruby , .NET , Perl y Java . El controlador de Java también se puede utilizar con JavaScript (a través del motor Rhino ). Se necesita una instancia del servidor Selenium RC para iniciar el caso de prueba html, lo que significa que el puerto debe ser diferente para cada ejecución paralela. [ cita requerida ] Sin embargo, para el caso de prueba Java/PHP solo es necesario que una instancia de Selenium RC se ejecute de forma continua. [14]

Selenium Remote Control fue una refactorización de Driven Selenium o Selenium B diseñada por Paul Hammant, a quien Jason atribuye la creación conjunta 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 cable (llamado 'Selenese' en su día) se volvió a implementar 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 menor 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 sirvió como el marco de pruebas estrella de todo el proyecto Selenium durante mucho tiempo. Y, significativamente, [ editorializando ] Selenium RC es la primera y más importante 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.

Controlador web de Selenium

En el núcleo de Selenium se encuentra Selenium WebDriver, una interfaz para escribir instrucciones que funcionan de forma intercambiable en todos los navegadores. Es el sucesor de Selenium RC. Selenium WebDriver acepta comandos (enviados en Selenese o mediante una API de cliente) y los envía a un navegador. Esto se implementa a través de un controlador de navegador específico del navegador, que envía comandos a un navegador y recupera resultados. La mayoría de los controladores de navegador en realidad inician y acceden a una aplicación de navegador (como Firefox , Google Chrome , Internet Explorer , Safari o Microsoft Edge ); también hay un controlador de navegador HtmlUnit , que simula un navegador que utiliza el navegador sin interfaz gráfica HtmlUnit.

A diferencia de Selenium 1, donde el servidor Selenium era necesario para ejecutar las pruebas, Selenium WebDriver no necesita un servidor especial para ejecutar las pruebas. En su lugar, WebDriver inicia directamente una instancia del navegador y la controla. Sin embargo, Selenium Grid se puede utilizar con WebDriver para ejecutar pruebas en sistemas remotos (ver a continuación). Siempre que es posible, WebDriver utiliza la funcionalidad nativa del nivel del sistema operativo en lugar de comandos JavaScript basados ​​en el navegador para controlar el navegador. Esto evita los problemas con las diferencias sutiles entre los comandos nativos y JavaScript, incluidas las restricciones de seguridad. [17]

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 siguió en junio de 2018. [18] Selenium WebDriver (Selenium 2.0) está totalmente implementado y es compatible con JavaScript ( Node.js ), Python , Ruby , Java , Kotlin y C# . A partir de 2021, Selenium 4 es un candidato de lanzamiento. [19]

Ejemplos

A continuación se muestran algunas de las instrucciones más sencillas que se pueden realizar:

Pitón
desde  selenium  importar  webdriver desde  selenium.webdriver.common.by  importar  By desde  selenium.webdriver.common.keys  importar  Keys desde  selenium.webdriver.support.ui  importar  WebDriverWait desde  selenium.webdriver.support.expected_conditions  importar  presencia_del_elemento_ubicado#Este ejemplo requiere Selenium WebDriver 3.13 o posterior con  webdriver . Firefox ()  como  controlador :  wait  =  WebDriverWait ( driver ,  10 )  driver . get ( "https://google.com/ncr" )  driver . find_element ( By . NAME ,  "q" ) . send_keys ( "cheese"  +  Keys . RETURN )  first_result  =  wait . till ( presence_of_element_located (( By . CSS_SELECTOR ,  "h3" )))  print ( first_result . get_attribute ( "textContent" ))
Java
importar org.openqa.selenium.By ; importar org.openqa.selenium.Keys ; importar org.openqa.selenium.WebDriver ; importar org.openqa.selenium.WebElement ; importar org.openqa.selenium.firefox.FirefoxDriver ; importar org.openqa.selenium.support.ui.WebDriverWait ; importar static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated ; importar java.time.Duration ;        clase pública HelloSelenium {    public static void main ( String [] args ) { WebDriver driver = new FirefoxDriver ( ) ; WebDriverWait wait = new WebDriverWait ( driver , Duration.ofSeconds ( 10 ) ); try { driver.get ( " https://google.com/ncr " ) ; driver.findElement ( By.name ( "q" ) ) . sendKeys ( " cheese " + Keys.ENTER ) ; WebElement firstResult = wait.tilt ( presenceOfElementLocated ( By.cssSelector ( " h3 " ) ) ) ; System.out.println ( firstResult.getAttribute ( " textContent " ) ) ; driver.quit ( ) ; } } }                              


DO#
usando System ; usando OpenQA.Selenium ; usando OpenQA.Selenium.Firefox ; usando OpenQA.Selenium.Support.UI ;    clase HelloSelenium { static void Main () { using ( IWebDriver driver = new FirefoxDriver ()) { WebDriverWait wait = new WebDriverWait ( driver , TimeSpan . FromSeconds ( 10 )); driver . Navigate (). GoToUrl ( "https://www.google.com/ncr" ); 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 que las pruebas utilicen instancias de navegador web que se ejecutan en máquinas remotas. Con Selenium Grid, un servidor actúa como el centro central. Las pruebas se ponen en contacto con el centro para obtener acceso a las instancias del navegador. El centro tiene una lista de servidores que proporcionan acceso a las instancias del navegador (nodos WebDriver) y permite que las pruebas utilicen estas instancias. Selenium Grid permite ejecutar pruebas en paralelo en varias máquinas y administrar diferentes versiones y configuraciones del navegador de forma centralizada (en lugar de hacerlo en cada prueba individual).

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

Véase también

Referencias

  1. ^ "Versión 4.25.0". 20 de septiembre de 2024. Consultado el 26 de septiembre de 2024 .
  2. ^ "Descargas". Selenio .
  3. ^ "El proyecto de automatización del navegador 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 del selenio".
  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 de código abierto Selenium para iPhone y Android". InfoWorld . Archivado desde el original el 5 de mayo de 2011. Consultado el 9 de mayo de 2012. Selenium recibió ese nombre porque Huggins, insatisfecho con las herramientas de prueba del mercado, buscaba un nombre que posicionara al producto como una alternativa al software de prueba comercial Mercury Interactive QuickTest Professional. El nombre, Selenium, fue seleccionado porque los suplementos minerales de selenio sirven como cura para el envenenamiento 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, ¡larga vida a 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 sorprendente 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 de selenio". seleniumhq.org . Consultado el 13 de noviembre de 2019 .
  15. ^ "Selenium 1 (Selenium RC) :: Documentación de 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. ^ "La arquitectura de las aplicaciones de código abierto: Selenium WebDriver". aosabook.org . Consultado el 7 de febrero de 2016 .
  18. ^ 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 .
  19. ^ "Descargas". selenium.dev . Consultado el 29 de septiembre de 2021 .
  20. ^ "Selenium Grid". Proyecto de automatización del navegador Selenium . Consultado el 9 de septiembre de 2020 .

Enlaces externos