是否有可能在Selenium中获取下一个元素

时间:2013-08-09 17:52:35

标签: selenium selenium-webdriver

我正在寻找在Selenium中获取下一个元素的通用方法。 Jquery有一个.next()函数和重载来允许给定的类型,所以我想可能有一个基于JS的解决方案可用于selenium。

鉴于它是如此有用的功能,我想象有人必须已经完成它。

干杯, 杰米

2 个答案:

答案 0 :(得分:5)

我会假设你选择一个选择元素(比如By.className("primary")),你想要获得具有该类名的下一个项目?

为此,您需要致电driver.findElements(By.className("primary"))。这将为您提供与该选择器匹配的所有元素的列表。然后,您可以选择适合您需求的任何一个。

但是,如果next()实际上返回了下一个兄弟,那么你可以这样做:

  • Javascript:element.nextSibling()
  • CSS:element + *
  • Xpath:element / following-sibling :: *

(用选择器替换元素)

答案 1 :(得分:1)

导航到同一层次结构下的元素的一种可能方法是在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. 然后它将返回到父元素,即android.widget.RelativeLayout,并选择同一层次结构下的下一个android.widget.TextView[@text="Next element text"]