2011-03-17 20 views
8

Obviamente, la respuesta a la pregunta depende de una serie de factores ambientales.¿Qué tan confiable es HtmlUnitDriver?

En general, , me pregunto qué experiencias de las personas están con HtmlUnitDriver como una herramienta fiable que puede ser "de confianza" para navegar por una página web, básicamente, de la misma manera lo hacen otros navegadores.

Por supuesto, me doy cuenta de que "la forma en que otros navegadores lo hacen" es bastante nebulosa; naturalmente, cada navegador tendrá sus peculiaridades. Pero estoy en un proyecto donde tenemos cientos de escenarios de prueba de aceptación (escritos en JBehave) y usando FirefoxDriver y InternetExplorerDriver, ejecutarlos lleva más de dos horas, lo cual es bastante difícil desde un punto de vista de integración continua. Así que me pregunto si es al menos factible que podíamos cambiar nuestras pruebas de aceptación a utilizar HtmlUnitDriver y esperar tiempos mucho más rápidos con mayoría el mismo comportamiento (y tal vez podríamos esperar que un puñado de pruebas a fallar utilizando HtmlUnitDriver y ejecutar específicamente esas pruebas con un controlador basado en navegador).

Nuestra interfaz de usuario usa GWT, lo que puede o no complicar las cosas (no sé).

Básicamente, en la experiencia de los demás, ¿funciona HtmlUnitDriver y otro navegador, o solo es apropiado para sitios web HTML muy simples con JavaScript mínimo y no debe utilizarse para una aplicación web empresarial?

Respuesta

8

Según mis experiencias con el uso de HtmlUnitDriver, diría que si no lo usa como su navegador de referencia cuando escribe sus pruebas, convertirlas para usarlo se convierte en una pesadilla. Esto es especialmente cierto cuando se trata de sitios pesados ​​de javascript.

La razón principal de esto es el uso subyacente obvio de htmlunit que, de forma predeterminada, utiliza el motor de JavaScript Rhino. En el pasado siempre he tenido que especificar que HtmlUnitDriver inicie htmlunit utilizando el motor de JavaScript de Firefox. Esto, en su mayor parte, resolvió los problemas de javascript que estaba encontrando al ejecutar pruebas usando HtmlUnitDriver.

Uno de los mayores problemas que tuve que enfrentar a la hora de utilizar el mismo código de prueba para cada navegador era si, en el sitio que se está probando, los desarrolladores de la interfaz de usuario habían asignado javascript eventos como onClick() a html elementos como un <span>.

La razón de esto es que si usted fuera a utilizar el método de WebDriver .click() en un WebElement que representa el <span>, entonces HtmlUnit no haría nada (se espera un onClick() para ser llamado en elementos tales como un <input>). Para evitar esto tuve que llamar manualmente un evento click() en javascript. Usted puede hacer esto ya sea usando el JavascriptExecutor de WebDriver o usando un WebDriverBackedSelenium y el .fireEvent() method de Selenium.

Así que si su sitio utiliza tales eventos, yo diría que cambiar a usar HtmlUnitDriver podría ser una gran tarea.

A pesar de esto, en realidad uso HtmlUnitDriver para todas mis pruebas. Sin embargo, me tomé el trabajo de descubrir todo lo anterior hace un tiempo, así que ahora use HtmlUnitDriver como mi navegador de línea de base al escribir las pruebas.

Cuestiones relacionadas