2011-09-20 1 views
13

Je voudrais que Selenium navigue dans un menu via les touches fléchées - Commencer par cliquer sur l'élément du menu supérieur puis sur "DOWN", "DOWN", ...Dans Selenium comment trouver l'objet "Actuel"

Le problème est que vous devez toujours fournir un élément spécifique pour envoyer le "DOWN" à.

Est-il possible d'obtenir l'élément actuel?

J'ai essayé:

by.xpath(".") 

mais il a dit que l'expression était méconnue ou n'a pas retourné un objet propre.

Je m'attends à ce que je manque un truc stupide.

Répondre

25

Dans Sélénium 2.0, si vous utilisez WebDriver pour conduire les tests dans le navigateur, vous pouvez utiliser la classe WebDriver.TargetLocator pour obtenir l'élément de mise au point, dans une fenêtre/cadre:

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

Si aucun élément est mis au point, l'élément actif se révélerait être le body du document étant AFF layed, ce qui pourrait être le cas lorsque vous lancez une nouvelle page, par exemple. Lorsque vous invoquez des méthodes telles que click, sendKeys etc., vous trouverez le WebElement renvoyé par l'invocation ci-dessus qui représentera toujours l'élément en question.

Cela a été testé en utilisant FirefoxDriver, et je suppose que ce serait le cas pour les autres pilotes, sauf pour le HtmlUnitDriver et les pilotes similaires qui n'utilisent pas un navigateur à part entière sous le capot.

7

en python:

element = driver.switch_to.active_element 
+3

Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire concernant la façon et/ou la raison pour laquelle il résout le problème améliorerait la valeur à long terme de la réponse. – mech

Questions connexes