Quiero saber la relación entre Watir y Selenium. Encontré una pequeña cita “Watir Powered By Selenium!” en el sitio web de Watir. Qué significa eso?

Excelente pregunta!

Watir comenzó con WATIR-CLASSIC, que es solo para IE y no utiliza selenio-ruby -inding, simplemente maneja Internet Explorer a través del WIN32OLE.

Pero WATIR-WEBDRIVER que maneja el navegador usando selenium-ruby-binding.

Pero en este momento, este WATIR-CLASSIC está en desuso, y WATIR solo usa el enlace de selenio-rubí, así que si necesita

requiere ‘watir’

usa automáticamente el enlace webdriver, no clásico.

Entonces, la pregunta es, ¿qué significa esto cuando WATIR usa el enlace ruby-selenium?

La respuesta es que ahora WATIR es simplemente un envoltorio alrededor de este enlace de selenio rubí, nada más, el código real que está en ejecución es el enlace de selenio. Para un ejemplo,

Si escribe el siguiente código WATIR,

b.text_field (id: ‘something’). set ‘Raj’

entonces WATIR convierte automáticamente este código en el equivalente de selenio de

driver.find_element (id: ‘algo’). clear
driver.find_element (id: ‘algo’). send_keys ‘Raj’

Entonces, ¿cuáles son las ventajas de este envoltorio WATIR en torno al selenio? ¿Por qué no podemos usar directamente el enlace de selenio?

¡Hay muchos!

Por ejemplo, si usa la espera implícita de selenio, el selenio solo verifica si el elemento existe o no, pero WATIR hace cuatro comprobaciones si es un campo de texto. ¡hace tres comprobaciones si es un botón!

existe?
¿visible?
habilitado?
escribible? (Esto está incluido para text_field no para botón)

Entonces WATIR realiza estas cuatro comprobaciones antes de interactuar con un elemento en el DOM.

Y luego el problema de elementos obsoletos se corrige en WATIR,

Si las páginas se actualizan, el elemento se vuelve obsoleto, pero si está utilizando WATIR, WATIR recupera el elemento, el elemento nunca se vuelve obsoleto si usa WATIR

¿Eso es todo? No, todavía allí, no hay necesidad de escribir xpath en WATIR,

si simplemente escribe el siguiente código en WATIR

b.element (texto: ‘algo’). clic

entonces WATIR convierte esto en

driver.find_element (xpath: “//*[normalize-space()=’something’font>”).click

si simplemente escribes el siguiente código en watir

b.span (texto: ‘algo’). clic

entonces WATIR convierte esto en

driver.find_element (xpath: “//span[normalize-space()=’something’font>”).click

Por lo tanto, no es necesario escribir xpath, xpath muy complejo se puede escribir fácilmente en WATIR sin siquiera escribir xpath.

Entonces, si elige usar Ruby Binding en Selenium, no tiene que usar Selenium, puede usar WATIR, que es un buen envoltorio alrededor de Selenium.

Watir comenzó inicialmente como un proyecto para escribir un controlador web para conducir Internet Explorer. Hace ese trabajo excelentemente. Recuerdo que a la gente le encantó especialmente la forma en que simplemente podemos conectarnos a una ventana del navegador existente y hacer algunas operaciones en ella

@ b.attach

Más tarde se creó el proyecto watir-webdriver . Comenzó como un proyecto para escribir enlaces de rubíes para el selenio. Pero rápidamente se convirtió en un contenedor escrito alrededor del selenio.

Cuando use watir-webdriver , puede manejar el navegador usando api de selenio escribiendo

@b = Watir :: Browser.new
@ b.driver.use_selenium_api

También podemos usar la api watir-webdriver

@ b.use_watir_api

watir-webdriver aprovecha la programación dinámica en ruby ​​y crea un objeto de todo el html de una página web. Podemos acceder fácilmente a cualquier elemento de una página web, si no existe un método para acceder a ese elemento, se crea dinámicamente.

@ b.random_element_name (: attribute => ‘attribute_value’). do_something

Debido a esta escritura, las pruebas de IU del navegador son muy fáciles en comparación con cualquier otro conjunto de herramientas en cualquier otro lenguaje de programación. Son extremadamente estables y envuelven el código en una bonita estructura con diseño de objetos de página, el mantenimiento también es extremadamente simple.