2011-09-20 18 views
13

Me gustaría que Selenium navegue por un menú mediante las teclas de flecha - Comenzando haciendo clic en el elemento del menú superior y luego presionando "ABAJO", "ABAJO", ...En Selenio, ¿cómo puedo encontrar el objeto "Actual"

El problema es que siempre debe suministrar un elemento específico para enviar el "ABAJO" a.

¿Hay alguna manera de obtener el elemento actual?

me trataron:

by.xpath(".") 

pero dijo que la expresión era reconocido o no devolvió un objeto adecuado.

Espero que me esté perdiendo algún truco estúpido.

Respuesta

25

En Selenio 2.0, si está utilizando WebDriver para conducir las pruebas en el navegador, puede utilizar la clase WebDriver.TargetLocator para obtener el elemento de enfoque, en una ventana/marco:

WebDriver driver = ... // initialize the driver 
WebElement currentElement = driver.switchTo().activeElement(); 

Si ningún elemento está en el foco, el elemento activo podría llegar a ser el body del documento que se disp puesta, que podría ser el caso cuando ejecutas una nueva página, por ejemplo. Cuando invoque métodos como click, sendKeys etc. encontrará que el WebElement devuelto por la invocación anterior siempre representará el elemento en foco.

Esto se probó usando FirefoxDriver, y sospecho que lo mismo sería cierto para otros controladores, excepto para el HtmlUnitDriver y controladores similares que no usan un explorador de pleno derecho bajo el capó.

7

en Python:

element = driver.switch_to.active_element 
+3

Si bien este código puede responder la pregunta, proporcionar un contexto adicional sobre cómo y/o por qué resuelve el problema mejoraría el valor a largo plazo de la respuesta. – mech

Cuestiones relacionadas