2013-08-09 16 views
6

Sto cercando un modo generico per ottenere l'elemento successivo all'interno del selenio. Jquery ha una funzione .next() e sovraccarichi per consentire un determinato tipo, quindi immagino ci possa essere una soluzione basata su JS disponibile per il selenio.È possibile eseguire un elemento next in Selenium

Dato che è una funzione così utile, avrei immaginato che qualcuno avrebbe dovuto farlo già adesso.

Cheers, Jamie

risposta

3

ho intenzione di assumere si intende quando si seleziona un elemento un po 'di selezione (diciamo By.className("primary")), e si desidera ottenere il prossimo elemento che ha quel nome della classe?

Per fare ciò, è necessario chiamare driver.findElements(By.className("primary")). Questo ti darà una lista di tutti gli elementi che corrispondono a quel selettore. Quindi, puoi scegliere quello più adatto alle tue esigenze.

Se, tuttavia, il prossimo() restituisce in realtà la prossima fratello, allora si può fare questi modi:

  • Javascript: element.nextSibling()
  • CSS: elemento + *
  • XPath: elemento/dopo-sibling :: *

(sostituire l'elemento con il selettore)

+0

Ahh grazie. Penso che element.nextElementSibling sia probabilmente la strada da percorrere. Sto volendo qualcosa di generico quindi, non posso prendere l'istanza di WebElement corrente e restituirne un'altra, in modo efficace senza alcuna conoscenza della pagina. – Jamie

0

Uno dei possibili modi per navigare all'elemento sotto stessa gerarchia è quello di utilizzare /../ in XPath come illustrato di seguito:

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

Qui lo farà:

  1. In primo luogo passare a android.widget.TextView[@text = "Current element text"]
  2. Poi si tornerà a elemento padre cioè android.widget.RelativeLayout e selezionare il prossimo android.widget.TextView[@text="Next element text"] sotto la stessa gerarchia.
Problemi correlati