10

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

鉴于它是如此有用的功能,我想现在一定有人已经做到了。

干杯,杰米

4

2 回答 2

5

我假设您的意思是当您选择某个选择器(例如By.className("primary"))时,您想要获取具有该类名的下一个项目?

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

但是,如果 next() 实际上返回下一个兄弟,那么您可以通过以下方式执行此操作:

  • Javascript: element.nextSibling()
  • CSS : 元素 + *
  • Xpath:元素/以下兄弟::*

(用您的选择器替换元素)

于 2013-08-09T18:40:04.093 回答
3

导航到同一层次结构下的元素的一种可能方法是/../在 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"]同一层次结构下的下一个元素。
于 2018-01-05T11:19:02.143 回答