Selenium 自动化测试实战:元素定位、浏览器控制与常用交互操作

简介: Selenium 是 Web 自动化测试中最常用的工具之一。它提供了丰富的 API,可以模拟用户对浏览器的各种操作,包括元素定位、窗口控制、鼠标事件、键盘事件、信息获取以及等待机制等。本文将结合示例,系统梳理 Selenium 的核心用法,帮助你快速上手。

Selenium 是 Web 自动化测试中最常用的工具之一。它提供了丰富的 API,可以模拟用户对浏览器的各种操作,包括元素定位、窗口控制、鼠标事件、键盘事件、信息获取以及等待机制等。本文将结合示例,系统梳理 Selenium 的核心用法,帮助你快速上手。

一、使用 By 定位元素

在 Selenium 中,推荐使用 By 类配合 find_element() 方法定位元素,语法格式如下:

python

find_element(By.定位方式, "定位名称")

常见的定位方式及示例如下:

python

find_element(By.ID, "kw")
find_element(By.NAME, "wd")
find_element(By.CLASS_NAME, "s_ipt")
find_element(By.TAG_NAME, "input")
find_element(By.LINK_TEXT, "新闻")
find_element(By.PARTIAL_LINK_TEXT, "新")
find_element(By.XPATH, "//*[@class='bg s_btn']")
find_element(By.CSS_SELECTOR, "span.bg s_btn_wr>input#su")

注意:旧版写法 find_element_by_id() 等已逐渐弃用,建议统一使用 By 方式。

二、控制浏览器和关闭操作

1. 控制浏览器窗口大小

python

driver.set_window_size(宽度像素值, 高度像素值)

2. 浏览器后退与前进

python

driver.back()      # 后退
driver.forward()   # 前进

3. 刷新页面

python

driver.refresh()

4. 关闭驱动

python

driver.close()  # 只关闭当前自动化浏览器窗口,chromedriver.exe 进程仍存在
driver.quit()   # 退出驱动并关闭全部自动化浏览器窗口,chromedriver.exe 进程被销毁

三、鼠标事件

Selenium 通过 ActionChains 类来模拟复杂的鼠标操作。首先需要引入:

python

from selenium.webdriver.common.action_chains import ActionChains

1. 左键单击

python

element.click()

2. 右键点击

python

element = driver.find_element(By.XXX, "xx")
ActionChains(driver).context_click(element).perform()

3. 左键长按

python

element = driver.find_element(By.XXX, "xx")
ActionChains(driver).click_and_hold(element).perform()

4. 鼠标悬停

python

element = driver.find_element(By.XXX, "xx")
ActionChains(driver).move_to_element(element).perform()

练习:悬停百度首页的“设置”链接。

5. 鼠标双击

python

element = driver.find_element(By.XXX, "xx")
ActionChains(driver).double_click(element).perform()

6. 鼠标拖放

python

source = driver.find_element(By.XXX, "xx")
target = driver.find_element(By.XXX, "xx")
ActionChains(driver).drag_and_drop(source, target).perform()

练习地址:菜鸟教程在线编辑器

四、键盘事件

键盘操作需要引入 Keys 模块:

python

from selenium.webdriver.common.keys import Keys

1. 输入内容

python

driver.find_element(By.ID, "kw").send_keys("seleniumm")

2. 退格键删除

python

driver.find_element(By.ID, "kw").send_keys(Keys.BACK_SPACE)

3. 输入空格

python

driver.find_element(By.ID, "kw").send_keys(Keys.SPACE)

4. 组合键全选

python

driver.find_element(By.ID, "kw").send_keys(Keys.CONTROL, 'a')

常用的键盘操作还包括 Keys.ENTER、Keys.TAB、Keys.ESCAPE 等,可根据需要组合使用。

五、获得信息

1. 获取当前页面 title

python

driver.title

2. 获取当前页面 URL

python

driver.current_url

3. 获取标签的文本

python

driver.find_element(By.ID, "kw").text

4. 获取标签的属性

标签的属性可通过 Chrome 开发工具的 Properties 标签查看。

  • get_property():精确匹配元素标签的属性,不能模糊匹配,不推荐。

  • get_attribute():模糊匹配元素标签的属性,可获取包含属性(如 class 属性)和大小写模糊匹配的属性,推荐使用。

python

element.get_attribute("class")

六、设置元素等待

显式等待:等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常。

python

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

element = WebDriverWait(driver, 5, 0.5).until(
    EC.presence_of_element_located((By.ID, "kw"))
)
element.send_keys("selenium")

上述代码表示:每 0.5 秒检查一次,最多等待 5 秒,直到 ID 为 kw 的元素出现在 DOM 中。

七、总结

本文整理了 Selenium 中常用的元素定位、浏览器控制、鼠标事件、键盘事件、信息获取和等待机制。掌握这些基础操作后,你可以编写出稳定、高效的 Web 自动化脚本。在实际项目中,建议:

  • 优先使用 By 定位方式;

  • 复杂交互使用 ActionChains;

  • 合理使用显式等待,避免硬性休眠;

  • 获取属性时优先选择 get_attribute()。

希望这篇博客能帮助你快速回顾和运用 Selenium 的核心功能。动手练习一遍,效果更佳!

相关文章
|
13小时前
|
存储 弹性计算 人工智能
阿里云轻量应用服务器新手指南:轻量优势、应用场景、支持镜像、使用限制及ECS区别对比
阿里云轻量应用服务器是面向建站、开发测试及AI小应用的轻量级云服务器,支持一键部署、应用镜像(如WordPress、Dify)、HTTPS和Web SSH,2核2G套餐低至38元/年,操作简单、账单透明,适合个人与中小企业快速上云。(239字)
|
14小时前
|
存储 弹性计算 人工智能
2026年阿里云大促:怎么参与阿里云优惠活动?阿里云便宜云产品有哪些?推荐
2026阿里云大促覆盖轻量、ECS、GPU、百炼AI服务、数据库存储等多款产品,不同身份用户对应不同优惠。个人新手优先考虑38元档位轻量服务器;中小型业务选择ECS;AI开发项目推荐GPU算力搭配百炼Token Plan。下单前先领取代金券,善用阿里云CLI查询资源信息,结合业务场景选型,最大化节省云资源成本。
28 1
|
14小时前
|
机器学习/深度学习 人工智能 API
2026 年通义千问 Qwen3.8-Flash 技术拆解:混合稀疏注意力架构、百万长文本能力与 API 调用教程
随着AI智能体、长文档分析、大规模代码工程的需求持续增长,传统大模型普遍面临长文本填充速度慢、推理成本高、多轮工具调用稳定性不足等痛点。通义千问推出Qwen3.8-Flash,作为新一代MoE混合专家多模态大模型,在保持强大综合能力的前提下,大幅优化长上下文推理速度,降低单位Token调用成本,同时强化编程、Agent自主规划、图文多模态理解能力。模型原生支持百万级上下文窗口,兼容主流API协议,能够无缝接入各类AI开发工具,非常适合开发者构建高并发AI应用、自动化办公智能体、代码助手、长文档知识库问答系统。
39 1
|
15小时前
|
人工智能 弹性计算 运维
2026 年阿里云大促优惠盘点:新客首购特价 + 老用户专属福利,轻量、ECS、GPU云服务器与 AI 产品选购指南
每一轮大促都是采购云资源、降低算力成本的黄金窗口。阿里云大促会针对不同身份用户设置差异化权益,新用户可以享受力度极大的首购特惠,老用户则有专属限量资源、续费折扣等福利。 阿里云轻量应用服务器、阿里云ECS云服务器、阿里云GPU云服务器、阿里云大模型服务平台 以及各类AI云产品都参与活动,很多实例规格库存有限,需要结合自身业务场景理性选购,避免盲目下单造成资源浪费。
25 1
|
18小时前
|
人工智能 自然语言处理 小程序
万小智全新升级到3.0版本,新增哪些功能?阿里云万小智AI建站新增SEO和GEO功能
阿里云万小智3.0全新升级,支持自然语言建站、全栈交付(含前后端+数据库),5–10分钟生成网站;新增GEO与SEO智能诊断、多语言、AI图文视频创作、一键部署及域名/HTTPS自动配置,赋能中小企业高效建站与经营。(239字)
|
18小时前
|
缓存 开发工具 对象存储
阿里云 CDN 实践(1/6):从加速原理到缓存刷新自动化(附 Python SDK 代码)
CDN 的所有配置本质上都在回答:什么内容、缓存多久、放在哪里。本文先讲清 CNAME 调度、L1/L2 分层缓存、命中率与缓存 Key 四个核心概念,再给出 OSS 源站接入、缓存规则下发、发布即刷新与大促前预热的 Python SDK 完整代码,最后附 TypeA 鉴权防盗链、日志分析与七条踩坑经验,可直接套用到生产。
|
19小时前
|
云安全 Kubernetes 安全
云安全 | Docker 容器逃逸复盘(一):从隔离边界到运行时链路,如何确认自己身处容器
本文复盘云安全授课,系统解析Docker隔离机制(namespace/cgroup/网络)、容器识别方法(.dockerenv、进程、命令集)及四类逃逸成因,强调“边界失效即逃逸”,兼顾K8s控制面风险,突出实操推理与靶场边界意识。(239字)
39 1
|
19小时前
|
算法 安全
算法备案材料被退回“内容太少“:1800 字和 16000 字差在哪里
首次算法备案被退,主因非内容缺失,而是“写法不当”:原文仅罗列要点(如应急处置6步压缩成1句),缺乏可执行细节。升级版将每项制度展开为完整文件,明确责任人、触发条件、分级标准、证据留存、复审周期,并以表格固化岗位职责与制度清单,确保“提到即有、有即可用”。
|
20小时前
|
人工智能 算法 安全
EEAT 编年史:从 2005 的评分员文档到 2026 的 AI 概览
EEAT(经验、专业、权威、可信)并非排名因子或分数,而是Google评估员指南中的质量标准。它决定内容能否被AI引用、进入YMYL领域及对抗AI同质化——核心是“该信谁”。二十年演进,本质是Google对可信信息源的持续校准。
|
21小时前
|
移动开发 文字识别 前端开发
给博客挂上人机验证:官方说三步接入,我踩了五个坑
凌晨被告警叫醒,注册接口被脚本刷出三千个死账号,优惠券被薅。本文记录从手写验证码翻车到接入阿里云验证码 Captcha 无痕验证的全过程:五种验证形态怎么选、客户端三步代码、服务端 VerifyIntelligentCaptcha 验签,以及前端回调不等于放行、region 与服务端地址必须同源等五个坑,附计费项与自查清单。

热门文章

最新文章