2009-12-12 17 views
5

Estoy usando Selenium para probar mi aplicación. Una buena prueba sería que después de cada manipulación DOM validaría el DOM. ¿Hay una buena manera de hacer esto?Validar la manipulación DOM al usar Selenium

maneras obvias son:

  • uso alguna función selenio incorporado. ¿Hay alguno?
  • obtener el HTML del DOM después de la manipulación y utilizar un validador local. Sin embargo, no puedo ver cómo obtener el HTML para el DOM actual de Selenio.
  • Podría pasar por javascript de alguna manera, ya sea agregando un archivo JS durante la prueba o a través de Selenium. Pero no estoy seguro de cómo hacerlo. ¿Pensamientos?

Respuesta

4

No hay un proceso incorporado para hacer esto usando Selenium. Sin embargo, hay un proyecto de código abierto que se basa en WebDriver, WebDriver se está convirtiendo en Selenium 2, que le permite realizar pruebas de diseño.

El proyecto está en http://code.google.com/p/fighting-layout-bugs/ y se mostró por primera vez en GTAC 2009 en Zurich. El código usa W3C y jQuery para verificar la validez del DOM. Eche un vistazo al video de la charla y el código que está allí.

EDIT:

Gracias a sampablokuper la validación W3C está en code.google.com/p/w3c-markup-validation-filter/

+0

Es un proyecto extremadamente atractivo, pero las pruebas de diseño son bastante diferentes a las pruebas de HTML para la validez. – sampablokuper

+0

el trabajo de marco hace la validación w3c. Mire el video en el sitio para ver el ejemplo. Crea un recuadro en la página que es rojo o verde dependiendo de cómo se valida, así que solo verifica su color – AutomatedTester

+0

Es verdad, el video sí lo menciona, pero el código para hacerlo está en el otro proyecto de Michael Tamm: http://code.google.com/p/w3c-markup-validation-filter /. Todavía no he logrado ejecutar ese código en mi sistema (no toco Java a menudo, por lo que soy un poco lento) pero estoy deseando hacerlo. Saludos :) – sampablokuper

1

que he estado pensando en el mismo frente. Aquí está mi progreso hasta ahora.

Se puede acceder al atributo JavaScript document.documentElement.outerHTML en algunos navegadores, p. Safari y Chrome, pero no en Firefox. Esto le mostrará el resultado de las manipulaciones DOM pero no le proporcionará el código fuente completo para la página. Si se inyecta JavaScript que almacenará el valor de document.documentElement.outerHTML después de que se haya llevado a cabo su manipulación DOM, debería poder obtener Selenium para escribir ese valor en el área de texto de "entrada directa" del Validador W3C y enviarlo . Debería anteponer y anexar el valor de manera apropiada para que sea un documento HTML válido (X). Todavía no he logrado que Sylan siga todos estos pasos.

anteponiendo "view-source:" a la URL (como se hace here) funciona en algunos navegadores, p. Firefox y Chrome, pero no en Safari. No le mostrará el resultado de las manipulaciones DOM. Parece que no puedo obtener Selenium IDE para abrir una dirección que comience con "view-source:"; siempre precede una barra diagonal, y no estoy seguro de cómo evitar eso.

Me interesaría saber qué otros enfoques han intentado las personas y si han tenido éxito.

0

Trate

String html = selenium.getEval("window.document.body.innerHTML"); 

Se le dará todo el DOM HTML actual, que fue manipulada por JavaScript.

Cuestiones relacionadas