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()
关键修改说明
替换弃用方法:
- 完全匹配链接文本:
driver.find_elements(By.LINK_TEXT, '目标文本') - 匹配包含特定文本的链接:
driver.find_elements(By.PARTIAL_LINK_TEXT, '目标关键词')
使用前需导入from selenium.webdriver.common.by import By
- 完全匹配链接文本:
移除冗余模块:
webbrowser模块无需保留,Selenium的driver.get(URL)可直接打开目标页面添加等待机制:通过
WebDriverWait等待元素加载,避免页面未完全渲染导致的元素定位失败,更适配4000个链接的批量操作场景优化点击逻辑:用JS执行点击操作,可规避元素遮挡、不可交互等常见异常
内容的提问来源于stack exchange,提问作者Monica Rierson
相关产品推荐
相关产品推荐

