获取所有子元素

新手上路,请多包涵

在带有 Python 的 Selenium 中,是否可以将 WebElement 的所有子元素作为列表获取?

原文由 walshie4 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

是的,您可以通过 find_elements_by_css_selector("*")find_elements_by_xpath(".//*") 实现。

但是,这听起来不像是查找元素的 所有子 元素的有效用例。获得所有直接/间接孩子是一项昂贵的操作。请进一步解释您要做什么。应该有更好的方法。

 from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.stackoverflow.com")

header = driver.find_element_by_id("header")

# start from your target element, here for example, "header"
all_children_by_css = header.find_elements_by_css_selector("*")
all_children_by_xpath = header.find_elements_by_xpath(".//*")

print 'len(all_children_by_css): ' + str(len(all_children_by_css))
print 'len(all_children_by_xpath): ' + str(len(all_children_by_xpath))

原文由 Yi Zeng 发布,翻译遵循 CC BY-SA 3.0 许可协议

是的,您可以使用 find_elements_by_ 将子元素检索到列表中。在此处查看 python 绑定:http: //selenium-python.readthedocs.io/locating-elements.html

示例 HTML:

 <ul class="bar">
    <li>one</li>
    <li>two</li>
    <li>three</li>
</ul>

您可以像这样使用 find_elements_by_

 parentElement = driver.find_element_by_class_name("bar")
elementList = parentElement.find_elements_by_tag_name("li")

如果您需要有关特定案例的帮助,您可以使用要从中获取父元素和子元素的 HTML 来编辑您的帖子。

原文由 Richard 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题