【问题标题】:How to find the object using Selenium and Python如何使用 Selenium 和 Python 查找对象
【发布时间】:2025-11-30 00:00:01
【问题描述】:

所以我使用了 find_element_by_xpath 在同一个 html 中使用 selenium 来定位不同的对象。

但现在我试图在同一个 html 上查找特定元素,总是复制 xpath (chrome>inspect element>copy xpath),我得到 NoSuchElementException 错误。

对象在任何 iframe 之外。

这是我要访问的对象:

<a class="carb-de-grid-name-link" data-index="1">CapLeads DataExtension_Copy</a>

还有整个 html 的东西:

https://docs.google.com/document/d/1QfKlfYcH1y-aZ1oOZXzPwR1qeas7QjQDo0VeQOqdm-E/edit?usp=sharing

蟒蛇行:

link_data_extension_2=driver.find_element_by_xpath('//*[@id="dg-wrap"]/div[2]/div[2]/div[2]/div[1]/div[3]/div[2]/a')

我已经尝试过按住程序等待页面加载(20s),什么都没有。

感谢任何输入。

【问题讨论】:

  • xpath 有很多部分。一个额外的 div 似乎很容易潜入源中,或者一个被删除。您是否尝试过一些不太复杂的方法,例如仅查找具有指定文本或指定类的锚点?
  • 您提到的 Html 元素 'CapLeads DataExtension_Copy' 在源中不可用文件共享。
  • @BryanOakley 我是 xpath 的新手,到目前为止,我一直在使用 chrome>inspect>copyxpath 并取得了成功。将查看带有指定文本的更近的锚点。
  • 当我在那个谷歌文档中搜索“CapLeads”时,什么也没找到。

标签: python selenium xpath css-selectors


【解决方案1】:

要查找文本为 CapLeads DataExtension_Copy 的元素,您可以使用以下任一解决方案:

  • 使用LINK_TEXT

    link_data_extension_2 = driver.find_element_by_link_text("CapLeads DataExtension_Copy")
    
  • 使用CSS_SELECTOR

    link_data_extension_2 = driver.find_element_by_css_selector("a.carb-de-grid-name-link")
    
  • 使用XPATH

    link_data_extension_2 = driver.find_element_by_xpath("//a[@class='carb-de-grid-name-link' and text()='CapLeads DataExtension_Copy']")
    

【讨论】:

  • 所有的建议都试过了,都找不到元素,报错“NoSuchElementExeption”和“无法定位元素”。绝对是硒看不到页面中的对象的问题。