Можно ли сделать следующий элемент в Selenium

Я ищу общий способ получения следующего элемента в селене. У Jquery есть .функция next () и перегрузки позволяют данный тип, поэтому я предполагаю, что может быть решение на основе JS, доступное для Селена.

учитывая, что это такая полезная функция, я бы предположил, что кто-то уже сделал это.

Ура, Джейми!--1-->

2 ответов


Я собираюсь предположить, что вы имеете в виду, когда вы выбираете элемент какой-то селектор (скажем By.className("primary")), и вы хотите, чтобы получить следующий элемент, который имеет имя класса?

для этого вам нужно позвонить driver.findElements(By.className("primary")). Это даст вам список всех элементов, которые соответствуют селектору. Затем вы можете выбрать тот, который соответствует вашим потребностям.

Если, однако, next () фактически возвращает следующего брата, то вы можете сделать это следующим образом:

  • в JavaScript: элемент./ / сделать()
  • CSS: element +*
  • Xpath: element / following-sibling::*

(замените элемент селектором)


один из возможных способов перехода к элементу в той же иерархии-использовать /../ в XPath, как показано ниже:

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

вот это:

  1. во-первых перейдите в раздел android.widget.TextView[@text = "Current element text"]
  2. затем он вернется к родительскому элементу i.e android.widget.RelativeLayout и выбираем следующий android.widget.TextView[@text="Next element text"] в той же иерархии.