WebDriver对象无find_elements_by_xpath属性报错求助(附关联代码)
报错原因分析与解决办法
报错原因
你使用的是Selenium 4.x版本,该版本已彻底移除了find_element_by_xpath、find_elements_by_tag_name这类旧的元素定位方法。这些方法在Selenium 3.x及更早版本中是合法的,但4.x开始被废弃并删除,因此调用时会抛出属性不存在的错误。
解决办法
有两种可行方案,推荐使用方案一:
方案一:适配Selenium 4.x的新API
- 先导入
By类,在你的import部分添加:from selenium.webdriver.common.by import By - 将旧的定位方法替换为新的调用格式:
- 原代码中
driver.find_element_by_xpath(...)替换为driver.find_element(By.XPATH, "...") - 原代码中
tab.find_elements_by_tag_name('a')替换为tab.find_elements(By.TAG_NAME, 'a')
- 原代码中
修改后的完整代码如下:
import re import time from datetime import datetime from operator import itemgetter import openpyxl import pandas as pd from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.by import By # 新增导入 driver = webdriver.Chrome() driver.minimize_window() url = 'https://www.sbostats.com/partite' tgame = [] driver.get(url) # 替换xpath定位方法 tab = driver.find_element(By.XPATH, "/html/body/div[2]/div[3]/div/div/div[2]/app-root/div/app-matches/section") # 替换tag_name定位方法 tab1 = tab.find_elements(By.TAG_NAME, 'a')
方案二:降级到Selenium 3.x版本(不推荐)
如果你暂时不想修改代码,可以通过pip降级Selenium到3.x系列的最新版本,执行命令:
pip uninstall selenium -y pip install selenium==3.141.0
但此方案不推荐,因为Selenium 3.x已停止维护,后续可能会出现兼容性问题。
内容的提问来源于stack exchange,提问作者D M
相关产品推荐
相关产品推荐

