2013-08-09 7 views
6

Poszukuję ogólnego sposobu na uzyskanie następnego elementu w selenie. Jquery ma funkcję .next() i przeciąża, aby umożliwić dany typ, więc wyobrażam sobie, że może istnieć rozwiązanie oparte na JS dostępne dla selenu.Czy można uzyskać następny element w Selenium

Biorąc pod uwagę, że jest to przydatna funkcja, wyobrażałem sobie, że ktoś już to zrobił.

Cheers, Jamie

Odpowiedz

3

mam zamiar założyć, to znaczy po wybraniu elementu niektóre wybieraka (słownie By.className("primary")) i chcesz dostać następny element, który ma tę nazwę klasy? Aby uzyskać to, musisz zadzwonić pod numer . To da ci listę wszystkich elementów pasujących do tego selektora. Następnie możesz wybrać tę, która odpowiada Twoim potrzebom.

Jeśli jednak next() faktycznie zwraca następny rodzeństwo, to można to zrobić te sposoby:

  • javascript: element.nextSibling()
  • CSS elementu + *
  • XPath: Element/following-sibling :: *

(Wymiana elementu z selektorem)

+0

Ahh dzięki. Myślę, że element.nextElementSibling jest prawdopodobnie drogą do zrobienia. Potrzebuję czegoś ogólnego, więc nie mogę pobrać bieżącej instancji WebElement i zwrócić innej, skutecznie bez znajomości strony. – Jamie

0

Jednym z możliwych sposoby, aby przejść do elementu w ramach tej samej hierarchii jest użycie /../ w XPath, jak pokazano poniżej:

current_element = driver.find_element_by_xpath('//android.widget.RelativeLayout/android.widget.TextView[@text="Current element text"]/../android.widget.TextView[@text="Next element text"]') 

tu będzie:

  1. Po pierwsze przejdź do android.widget.TextView[@text = "Current element text"]
  2. Wtedy będzie wrócić do elementu nadrzędnego tj. android.widget.RelativeLayout i wybierz następny android.widget.TextView[@text="Next element text"] w tej samej hierarchii.
Powiązane problemy