如何仅在python selenium中获取第一层子元素

时间:2018-01-06 19:26:16

标签: python selenium selenium-webdriver

如何在selenium python中获取仅第一层子元素的列表?

我想要类似于此处描述的内容:Selenium Python get all children elements

但是,我只想要第一层子元素。我附上了一张图片来解释。

sub list problem

如果我按照其他条目中的描述进行操作,我会得到所有sub和sub sub .......元素。我只想要第一层像图像中显示的4个div元素而不是8个子子元素。

3 个答案:

答案 0 :(得分:1)

是的,您需要指定直接父子关系,可以通过单个/在CSS中完成,也可以通过>在CSS选择器中完成:

driver.find_elements_by_xpath("//section[@id = 'irq']/div/div[@eid]")
driver.find_elements_by_css_selector("section#irq > div > div[eid]")

如果我从屏幕截图中得到它们,请重新检查irqeid。(它有点模糊)。

答案 1 :(得分:1)

是: elem.find_elements_by_xpath("./*")

当您放置".//*"时,它会把所有可能的子代都放在树中,但是使用一个斜杠"./*"只会得到下一级的子代。

答案 2 :(得分:0)

这看起来像您要找的东西:

>>> elements = driver.find_elements_by_xpath('//div[@id="first"]/div')
>>> [i.get_attribute('id') for i in elements]
['second-1', 'second-2', 'second-3']

示例html:

<html>
  <body>
    <div id="first">
      <div id="second-1"></div>
      <div id="second-2">
        <div id="third-1"></div>
      </div>
      <div id="second-3"></div>
    </div>
  </body>
</html>