如何按特定子元素/子元素选择元素

2024-04-19 21:57:49 发布

您现在位置:Python中文网/ 问答频道 /正文

<a class="author " name="baut001" href="#!"> <span class="content"> <span class=" given-name">first name</span> <span class=" surname">Last name</span> <svg focusable="false" viewBox="128" width="19.125" height="24" class="icon "> <path d="m22.6 77"></path> </svg> </span> </a> <a class="author" name="baut002" href="#!"> <span class="content"> <span class="text given-name">first name</span> <span class="text surname">Last name</span> <span class="author-ref" id="baff002"><sup>a</sup></span> </span> </a> <a class="author" name="baut003" href="#!"> <span class="content"> <span class=" given-name">first name</span> <span class=" surname">Last name</span> <svg focusable="false" viewBox="128" width="19.125" height="24" class="icon "> <path d="m22.6 77"></path> </svg> </span> </a>

有三个<a>标记,其中两个包含<svg>标记,我要单击这些元素。你知道吗


Tags: pathnamesvgfalsecontentsurnamegivenclass
2条回答

您可以在定位器中指定<svg>标记。你知道吗

您可以使用css_selector

driver.find_elements_by_css_selector('.author svg')

xpath

driver.find_elements_by_xpath('//a[@class="author"]//*[local-name()="svg"]')

如果要定位包含另一个节点的节点,可能需要使用以下格式的XPath

  1. 按子节点:

    //parent_node[child_node]
    

    或者

    //parent_node[child::child_node]
    
  2. 按子节点:

    //anscestor_node[.//descendant_node]
    

    或者

    //anscestor_node[descendant::descendant_node]
    

如果要选择包含svg子代节点的a节点,可以尝试

links_with_svg = driver.find_elements_by_xpath('//a[.//*[local-name()="svg"]]')

或者

links_with_svg = driver.find_elements_by_xpath('//a[descendant::*[local-name()="svg"]]')

相关问题 更多 >