2011-10-10 12 views
7

Estoy usando la última versión de Selenium y chromedriver para probar una aplicación ZK.¿Cómo obtengo el DOM actual con Selenium Java 2.8?

Durante la prueba, me gustaría volcar el DOM (o parte de él) para ayudarme a encontrar los elementos que necesito (y probablemente ayudar a las personas que tienen que realizar la prueba).

El método WebDriver.getPageSource() parecía prometedor pero solo devuelve el código HTML tal como fue enviado por el servidor, no el resultado después de ejecutar todo el código JavaScript.

Se ejecuta el código de JavaScript; Puedo encontrar elementos por ID que no puedo ver en el resultado de getPageSource(). Así que probé WebElement.getText(), pero ese es solo el texto de los elementos, no los elementos en sí mismos o sus atributos.

¿Es posible obtener el DOM o tengo que hacer una cirugía de ojo de cerradura aquí?

Respuesta

1

que tienen la misma pregunta, pero realmente la única manera que he encontrado para hacerlo es executescript:

/// <summary> 
     /// Gets the parentElement/Node of a particular element 
     /// </summary> 
     /// <param name="driver"></param> 
     /// <param name="element"></param> 
     /// <returns></returns> 
     public static IWebElement GetElementParent(IWebDriver driver,IWebElement element) 
     { 
      return (IWebElement) ((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].parentNode", element); 
     } 

por qué el By.DOM no tenga soporte por una función que no se sabe muy bien .. Sospecho que es debido a la necesidad de un webdriver para múltiples navegadores, etc.

+0

Bien, ya que la página contiene jQuery, podría obtener lo que quiero ejecutando '$ (argumentos [0]). Html()', supongo : - / –

Cuestiones relacionadas