2011-09-20 10 views
13

Chciałbym, aby Selenium poruszało się po menu za pomocą klawiszy strzałek - Zaczynając od kliknięcia górnej pozycji menu, a następnie naciskając "DÓŁ", "DÓŁ", ...W Selenie, jak znaleźć obiekt "Bieżący"

Problem polega na tym, że zawsze musisz podać konkretny element, aby wysłać "DÓŁ" do.

Czy istnieje sposób na uzyskanie bieżącego elementu?

Próbowałem:

by.xpath(".") 

ale powiedział, że wyrażenie to nierozpoznany lub nie zwrócić właściwego obiektu.

Oczekuję, że nie stracę głupiej sztuczki.

Odpowiedz

25

w selen 2.0, jeśli używasz WebDriver prowadzić testy w przeglądarce, można użyć klasy WebDriver.TargetLocator dostać element w centrum uwagi, w okna/ramy:

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

Jeśli żaden element nie jest w centrum uwagi, aktywnym elementem okaże się być body dokumentu będącego DISP layed, co może się zdarzyć, gdy na przykład uruchomisz nową stronę. Podczas wywoływania metod takich jak click, sendKeys itp. Znajdziesz WebElement zwrócone przez powyższe wywołanie zawsze reprezentuje element fokus.

Zostało to przetestowane przy użyciu FirefoxDriver i podejrzewam, że to samo dotyczy innych sterowników, z wyjątkiem HtmlUnitDriver i podobnych sterowników, które nie używają pełnowartościowej przeglądarki pod maską.

7

w Pythonie:

element = driver.switch_to.active_element 
+3

Chociaż ten kod może odpowiedzieć na pytanie, podanie dodatkowego kontekstu dotyczącego tego, w jaki sposób i/lub dlaczego rozwiązuje problem, poprawiłoby długoterminową wartość odpowiedzi. – mech

Powiązane problemy