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

Selenium 4.4.3报错:'WebDriver'无find_element_by_xpath属性求助

问题解决:Selenium 4.4.3 报错 AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'

问题描述

我使用的Selenium版本为4.4.3,沿用了适用于4.3.0版本的代码,但仍出现报错:AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'。我的代码如下:

from selenium import webdriver
import time

username = ' ' # 在这里修改你的用户名
password = ' ' # 在这里修改你的密码
url='https://academia.srmist.edu.in/'
driver = webdriver.Chrome("./chromedriver")
driver.get(url)
time.sleep(2)
driver.find_element_by_xpath('//*[@id="Email"]').send_keys(username)
driver.find_element_by_xpath('//*[@id="Password"]').send_keys(password)
time.sleep(1)
driver.find_element_by_xpath('//*[@id="signinForm"]/div[6]/input').click()

原因

Selenium从4.0版本开始就弃用了find_element_by_xpath、find_element_by_id这类旧写法,后续版本(包括4.3.0和4.4.3)都正式移除了这些方法,统一改用find_element()配合By类的语法。

修复方案

步骤1:导入By类

在代码开头添加By类的导入:

from selenium.webdriver.common.by import By

步骤2:替换旧的元素定位写法

把所有driver.find_element_by_xpath('xxx')替换为driver.find_element(By.XPATH, 'xxx')。

步骤3:简化驱动初始化(可选但推荐)

Selenium 4.4.0及以上版本支持自动管理ChromeDriver,无需手动指定驱动路径,直接写driver = webdriver.Chrome()即可。

修复后的完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

username = ' ' # 在这里修改你的用户名
password = ' ' # 在这里修改你的密码
url='https://academia.srmist.edu.in/'

# Selenium 4.4+ 自动管理驱动,无需指定路径
driver = webdriver.Chrome()
driver.get(url)
time.sleep(2)

driver.find_element(By.XPATH, '//*[@id="Email"]').send_keys(username)
driver.find_element(By.XPATH, '//*[@id="Password"]').send_keys(password)
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="signinForm"]/div[6]/input').click()

进阶优化(可选)

用显式等待替代time.sleep(),可以让代码更稳定,避免因页面加载慢导致的元素找不到问题:

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

username = ' ' # 在这里修改你的用户名
password = ' ' # 在这里修改你的密码
url='https://academia.srmist.edu.in/'

driver = webdriver.Chrome()
driver.get(url)

# 等待邮箱输入框加载完成,最多等待10秒
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="Email"]'))
).send_keys(username)

# 等待密码输入框加载完成
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="Password"]'))
).send_keys(password)

# 等待登录按钮加载完成并点击
WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//*[@id="signinForm"]/div[6]/input'))
).click()

内容的提问来源于stack exchange,提问作者AKELLA SRI RAM RA2011027010093

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:40:28