我正在寻找一种通用方法来获取 Selenium 中的下一个元素。Jquery 有一个 .next() 函数和重载以允许给定类型,所以我想可能有一个基于 JS 的解决方案可用于 Selenium。
鉴于它是如此有用的功能,我想现在一定有人已经做到了。
干杯,杰米
我正在寻找一种通用方法来获取 Selenium 中的下一个元素。Jquery 有一个 .next() 函数和重载以允许给定类型,所以我想可能有一个基于 JS 的解决方案可用于 Selenium。
鉴于它是如此有用的功能,我想现在一定有人已经做到了。
干杯,杰米
我假设您的意思是当您选择某个选择器(例如By.className("primary")
)时,您想要获取具有该类名的下一个项目?
为此,您需要调用driver.findElements(By.className("primary"))
. 这将为您提供与该选择器匹配的所有元素的列表。然后,您可以选择适合您需要的任何一个。
但是,如果 next() 实际上返回下一个兄弟,那么您可以通过以下方式执行此操作:
(用您的选择器替换元素)
导航到同一层次结构下的元素的一种可能方法是/../
在 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"]')
在这里它将:
android.widget.TextView[@text = "Current element text"]
android.widget.RelativeLayout
,即选择android.widget.TextView[@text="Next element text"]
同一层次结构下的下一个元素。