【问题标题】:Python selenium find element by xpath or css selectorPython selenium 通过 xpath 或 css 选择器查找元素
【发布时间】:2021-11-21 15:14:31
【问题描述】:

如何使用 python selenium 点击“NATIONAL”文本

<div class="ellipsis__content">
    <ul class="breadcrumb_new" id="breadcrumb">
       <li>
         <span>NATIONAL</span>
       </li>
    </ul>
</div>

我尝试了以下这些,

find_element_by_xpath("//div[@id='breadcrumb']/li/span")
find_element_by_css_selector("#breadcrumb > li > span")

这两种方法都不起作用,这里有什么想法

【问题讨论】:

    标签: javascript python css selenium automation


    【解决方案1】:

    试试这个,应该适合你:

    ele=driver.find_element_by_xpath("//*[@id='breadcrumb']//span")
    ele.click()
    

    【讨论】:

    • 使用 //*[@id='breadcrumb'] 找到初始元素,这意味着我将在整个 HTML 源中搜索具有此 ID 的元素;主要由 //* 完成,在这种情况下也表明我的目标在这个保护伞下,然后使用 //span 直接定位 span 标签。
    【解决方案2】:

    可能你需要等到元素被正确渲染。

    代码试用 1:

    time.sleep(5)
    driver.find_element_by_xpath("//div[@id='breadcrumb']/li/span").click()
    

    代码试用 2:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='breadcrumb']/li/span"))).click()
    

    PS:如果我们在HTML DOM 中有唯一条目,请检查dev tools(谷歌浏览器)。

    检查步骤:

    Press F12 in Chrome -> 转到element 部分 -> 执行CTRL + F -> 然后粘贴xpath 看看,如果您想要的element 用@ 得到突出显示 987654330@匹配节点。

    【讨论】:

      【解决方案3】:

      这个问题已经有了答案,但要补充几点。

      我尝试了以下这些,

      find_element_by_xpath("//div[@id='breadcrumb']/li/span")
      

      id breadcrumbul 标签的一部分,但您指的是div 标签。如果尝试如下,它应该可以工作。

      find_element_by_xpath("//ul[@id='breadcrumb']/li/span")
      

      find_element_by_css_selector("#breadcrumb > li > span")

      CSS 定位器没有任何问题。如果您遇到可能需要调试并查看或尝试添加一些 explicit 值的问题,它应该仍然有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2018-10-22
        • 2016-03-12
        • 1970-01-01
        相关资源
        最近更新 更多