迭代元素列表并在xpath选择中保留父元素的上下文

时间:2017-12-12 12:01:23

标签: python selenium selenium-webdriver webdriver selenium-chromedriver

我有一个通过find_elements_by_xpath

检索的元素列表
results = driver.find_elements_by_xpath("//*[contains(@class, 'result')]")

现在我想迭代返回的所有元素并找到特定的子元素

for element in results:
    field1 = element.find_elements_by_xpath("//*[contains(@class, 'field1')]")

我的问题是在迭代中忽略了xpath选择的上下文,所以 field1 总是只返回带有 field1 的第一个元素无论当前元素如何,页面上的类

2 个答案:

答案 0 :(得分:2)

正如@Andersson发布的修复非常简单,所需要的只是表达式开头的点:

for element in results:
    field1 = element.find_elements_by_xpath(".//*[contains(@class, 'field1')]")

答案 1 :(得分:-1)

使用css选择器(减少输入)并一次查找所有元素更容易:

for element in driver.find_elements_by_css_selector(".result .field1")
    field1 = element