python:Selenium 4.47 编码新的写法

pip install selenium

pip show selenium

Name: selenium

Version: 4.47.0

Summary: Official Python bindings for Selenium WebDriver

Home-page: https://www.selenium.dev

Selenium报错:'WebDriver' object has no attribute 'find_element_by_id'

原因

Selenium 4.3.0及以上版本已经彻底移除find_element_by_id()find_element_by_xpath()find_element_by_class_name() 这一类 by_* 的方法。

旧写法已经废弃,不再支持。

❌ 旧写法(会报错)

python 复制代码
# 已经废弃!
driver.find_element_by_id("username")
driver.find_element_by_xpath("//div")
driver.find_element_by_class_name("box")
driver.find_elements_by_id("xxx")

✅ 新写法(统一使用find_element,配合By类)

需要导入:from selenium.webdriver.common.by import By

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

# 通过id查找
elem = driver.find_element(By.ID, "username")

# xpath
elem = driver.find_element(By.XPATH, "//div[@class='item']")

# class name
elem = driver.find_element(By.CLASS_NAME, "box")

# css选择器
elem = driver.find_element(By.CSS_SELECTOR, ".content")

# name属性
elem = driver.find_element(By.NAME, "password")

# 查找多个元素 find_elements (带s)
elems = driver.find_elements(By.CLASS_NAME, "list-item")

By类支持的定位方式

定位方式 写法
id By.ID
xpath By.XPATH
class By.CLASS_NAME
css选择器 By.CSS_SELECTOR
name属性 By.NAME
标签名tag By.TAG_NAME
链接文本 By.LINK_TEXT
部分链接文本 By.PARTIAL_LINK_TEXT

常见坑

  1. 忘记导入By :直接写driver.find_element("id","xxx")也可以,不推荐,可读性差
python 复制代码
# 也能运行,但建议用By常量
driver.find_element("id", "username")
  1. 网上很多老教程还是旧API,复制过来直接报错。

  2. 如果你的代码大量是旧方法,不想全部改,可以降级selenium版本(不推荐)

bash 复制代码
pip install selenium==4.2.0

建议改成新标准写法,新版本有更好的等待、调试能力。

完整示例

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com")

# 定位id为search的输入框
search_input = driver.find_element(By.ID, "search")
search_input.send_keys("selenium")

driver.quit()
相关推荐
2601_9622982710 小时前
Python自动化脚本的编写01
python·appium·自动化脚本·web自动化·应收账款管理
AIFQuant10 小时前
Python实时外汇行情接入实战:WebSocket与REST K线查询
开发语言·python·websocket
babe小鑫10 小时前
生物统计学专业校招:SAS、R、Python学习顺序实用指南
python·学习·r语言
vx_Biye_Design10 小时前
springboot游泳馆系统93765-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·spring·课程设计
固定资产管理系统软件11 小时前
该去哪里找专业靠谱的智慧智能设备固定资产管理系统?
人工智能·python
ctlover11 小时前
LangChain 概述
python·langchain
专业程序开发源11 小时前
springbootLivehouse票务系统-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·pygame
李高钢11 小时前
Python Django 框架入门:从零搭建你的第一个 Web 应用
前端·python·django
2601_9669496511 小时前
从轮询到策略消费:量化系统如何高效处理五档盘口数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
萧鼎11 小时前
2026实战:用 accelerate 库加速 PyTorch 训练,核心语法与避坑指南
python·开源·教程·python库·accelerate