【问题标题】:Selenium find all sub elementsSelenium 查找所有子元素
【发布时间】:2021-10-07 15:29:29
【问题描述】:

我有html结构:

<div class="parent" data-index="0"><div class="sub">...</div></div>
<div class="parent" data-index="1"><div class="sub">...</div></div>

当我单击某个父元素并且所有子元素更改类时,如下所示:

   <div class="parent selected" data-index="0"><div class="sub selected">...</div></div>
   <div class="parent" data-index="1"><div class="sub">...</div></div>

无论是否单击元素,我都想用 selenium 遍历所有父元素及其子元素 现在我正在这样做:

for i in range(n):
    parent= driver.find_element_by_xpath(f"//div[@class='parent' and @data-index='{i}']")
    for elem in parent.find_elements_by_xpath("./div"):
       do_something(elem)

但是这不会捕获被点击的父元素。

我还尝试将 xpath 更改为 "//div[starts-with(@class,'parent') and @data-index='{i}']",这也捕获了单击父元素。 但随后parent.find_elements_by_xpath("./div") 返回空列表

我不确定我做错了什么。我期待着任何建议。 提前致谢。

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    你可以试试find_by_class_namelike:

    for parent in driver.find_elements_by_class_name("parent"):
        for sub in parent.find_elements_by_class_name("sub"):
            do_something(sub)
    

    由于class="parent selected"class="parent" 都分配给parent 类,因此单个查询将选择所有父母(包括选定的父母)

    【讨论】:

      【解决方案2】:

      这样尝试一次:

      parents = driver.find_element_by_xpath("//div[contains(@class,'parent')]") # this xpath should highlight all the "div" tags which has "parent" in its class.
      for parent in parents:
          elements = parent.find_elements_by_xpath("./div") # this should give all the child "div" tags. If they are nested use ".//div"
          
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-10
        • 2015-11-10
        • 2012-12-12
        • 2021-12-12
        • 2014-05-28
        • 2021-03-25
        • 1970-01-01
        相关资源
        最近更新 更多