2011-11-23 12 views
9

Estoy usando Selenium WebDriver y tengo un problema.Cómo depurar acciones de Selenium WebDriver?

En la interfaz de usuario, WebDriver puede ver los elementos, pero no puede realizar ninguna acción como hacer clic, escribir, seleccionar, etc. El selenio encuentra los elementos y los devuelve como una instancia de webelement. Puedo obtener, getText(), isEnabled() etc., pero no realizaré ninguna acción. No hay excepciones Simplemente se cuelga.

No entiendo este comportamiento. Si el WebDriver lo ve, debería hacer clic. He intentado usar acciones. Eso también muestra el mismo comportamiento.

¿Cómo se solucionó este problema? ¿Algunas ideas?

Respuesta

2

La única forma de depurar el código es escribir el contenedor alrededor de WebDriverEventListener y escuchar los registros. De otro modo, no es posible.

+0

¿Tiene el código para esto? Estoy muy interesado en el contenedor y en cómo configurar los registros en Selenium 2 WebDriver. – MacGyver

+1

@MacGyver, del webdriver 2.15.0, se introduce el registro. Entonces, creo que no hay necesidad de escribir código para eso. Incluso usted puede establecer el nivel de registro. Prueba la última versión. – Rajasankar

+0

Descubrí cómo hacerlo en Visual Studio sin usar este envoltorio. Ver mi respuesta para más detalles. – MacGyver

4

Pequeño recordatorio: WebDriver puede encontrar elementos en la página que están "ocultos" por CSS.

Estos elementos se encuentran, pero no se puede hacer clic (o cualquier otra acción).

Intentar llamar al método isDisplayed();

0

Si está utilizando Nunit y los controladores de cliente C#, puede conectar Visual Studio a su proceso nunit-agent.exe yendo a Herramientas> Adjuntar a proceso> elegir "nunit-agent.exe"> Adjuntar.

Puede hacer lo mismo cuando usa JUnit y los controladores de cliente Java, adjuntando el proceso nunit-agent.exe en Eclipse.

===========

Para responder a sus otras preguntas ...

1.) Es posible que necesite convertir eventos nativos sobre para su conductor con el fin de ver JavaScript eventos.

2.) También encontré algunos errores de software con WebDriver para obtener/establecer valores. Pruebe estos para obtener el InnerHtml (también conocido como getText) que estaba explicando en su pregunta. Este es el código de .NET 4.0 ... por lo que puede necesitar modificarlo apropiadamente. Estos están en mi clase Element, de ahí el prefijo de "Element" en las llamadas a elementos anidados.

public static int GetInnerHtmlByXPathTypeInt(IWebDriver driver, string xpath) 
{ 
    return int.Parse(Element.GetInnerHtmlByXpath(driver, xpath)); 
} 
public static double GetInnerHtmlWithoutDollarSignByXPath(IWebDriver driver, string xpath) 
{ 
    return double.Parse(Element.GetInnerHtmlByXpath(driver, xpath).Replace("$", string.Empty)); 
} 

public static string GetValueByXPath(IWebDriver driver, string xpath) 
{ 
    return driver.FindElement(By.XPath(xpath)).GetAttribute("value"); 
} 

public static string GetInnerHtmlByXpath(IWebDriver driver, string xpath) 
{ 
    return driver.FindElement(By.XPath(xpath)).Text; 
} 
Cuestiones relacionadas