You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium报错:WebDriver无find_elements_by_link_text属性,求更新写法

问题分析与解决方案

代码中的错误点

  • WebDriver初始化错误:driver = webdriver.Chrome仅引用了类,未创建实例,必须添加括号完成初始化:driver = webdriver.Chrome()
  • 方法已被弃用:Selenium 4.x及后续版本移除了find_elements_by_link_text这类旧版定位方法,需改用基于By类的新写法

修正后的代码

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化Chrome驱动实例
driver = webdriver.Chrome()

URL = "https://banfaouf.com/lfmamdofpisao"
# 用Selenium自带方法打开URL,无需webbrowser模块
driver.get(URL)

# 等待页面加载,确保链接元素渲染完成(适配大量链接的场景)
wait = WebDriverWait(driver, 10)
# 匹配**包含特定文本**的链接用By.PARTIAL_LINK_TEXT,完全匹配用By.LINK_TEXT
links = wait.until(EC.presence_of_all_elements_located((By.PARTIAL_LINK_TEXT, 'Download File')))

time_delay_between_clicks = 2

for link in links:
    # 用JS点击避免元素遮挡、不可点击等异常
    driver.execute_script("arguments[0].click();", link)
    time.sleep(time_delay_between_clicks)

# 操作完成后关闭浏览器
driver.quit()

关键修改说明

  1. 替换弃用方法:

    • 完全匹配链接文本:driver.find_elements(By.LINK_TEXT, '目标文本')
    • 匹配包含特定文本的链接:driver.find_elements(By.PARTIAL_LINK_TEXT, '目标关键词')
      使用前需导入from selenium.webdriver.common.by import By
  2. 移除冗余模块:webbrowser模块无需保留,Selenium的driver.get(URL)可直接打开目标页面

  3. 添加等待机制:通过WebDriverWait等待元素加载,避免页面未完全渲染导致的元素定位失败,更适配4000个链接的批量操作场景

  4. 优化点击逻辑:用JS执行点击操作,可规避元素遮挡、不可交互等常见异常

内容的提问来源于stack exchange,提问作者Monica Rierson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:22:16