news 2026/6/23 15:24:08

【自动化测试入门】Selenium基础(建议收藏)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【自动化测试入门】Selenium基础(建议收藏)

selenium简介

1、什么是Selenium

Selenium是支持Web浏览器自动化的一系列工具和库的综合项目。

它提供了扩展来模拟用户与浏览器的交互,用于扩展浏览器分配的分发服务器, 以及用于实现W3C WebDriver规范的基础结构, 该 规范 允许您为所有主要Web浏览器编写可互换的代码。

Selenium的核心是WebDriver,这是一个编写指令集的接口,可以在许多浏览器中互换运行。

Selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决Requests无法执行JavaScript代码的问题。

三大组件

Selenium不仅仅是一个工具或API, 它还包含许多工具如:

SeleniumWebDriver

WebDriver以本地化方式驱动浏览器,是一个浏览器自动化测试的 API集合。它提供了很多与浏览器自动化交互的特性,并且这些API主要是用于测试Web程序。

提供相对应的API来操作浏览器,比如:ChromeFireFoxIE

Selenium WebDriver指的是语言绑定和各个浏览器控制代码的实现。这通常被称为WebDriver

Selenium WebDriverW3C推荐标准

Selenium IDE

是一款面向Web的录制与回放的自动化测试工具。这对于刚介入自动化的测试人员来说,从这个入手再好不过了。

Selenium Grid

Selenium Grid允许通过将客户端发送的命令路由到远程浏览器实例来在远程机器上执行WebDriver脚本。

Grid的目标:

2、selenium的用途

*Selenium*有很多功能, 但其核心是Web浏览器自动化的一个工具集, 它使用最好的技术来远程控制浏览器实例, 并模拟用户与浏览器的交互。

它允许用户模拟终端用户执行的常见活动;将文本输入到字段中,选择下拉值和复选框,并单击文档中的链接。它还提供许多其他控件,比如鼠标移动、任意JavaScript执行等等。

(1)Selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用浏览器自动访问目标站点并操作,那我们也可以拿它来做爬虫。

(2)Selenium本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等...进而拿到网页渲染之后的结果,可支持多种浏览器

3、Selenium的优缺点

(1)优点

开源免费

Selenium是由志愿者开源贡献实现的,因此源代码免费提供给任何人使用,并且你可以通过这些源码进行修改及改进

跨平台多语言支持

Selenium它是一个支持在多个不同的操作系统中执行,并且通过webdriver协议(采用的w3c标准)规定了标准使得可以在任何语言都能够使用Selenium,但目前Selenium仅支持C#,RubyJavaPHPPythonJavaScript等主流的编程语言,多平台目前支持windowsAndroidmacLinux

多语言支持

跨浏览器支持

Selenium 也支持在不同的浏览器间进行测试,目前的主流浏览器都支持,目前能支持的浏览器内核有:

社区活跃出现问题能及时解决,

Selenium起源 2004年,发展的时间接近快20年了,而且Selenium的更新速度也非常积极与频繁,因此社区生态建设的也非常完善,且教程文档也比较齐全,现在只要你百度搜索相关Selenium到处都是,因此Selenium是我们测试工程师需要掌握的必不可少的工具。

支持移动端,

目前的Selenium已经对移动端的浏览器提供了非常好的支持,用于测试H5Appium要方便得多。

较为庞大的插件库,

Selenium由于是开源的,少不了大佬们的各种魔改或者扩展开发,目前基于Selenium开发或者扩展的工具多不下1000个,github中随处可找到。

(2)缺点

需要编码能力才能上手,无法使用界面来进行编写自动化测试

由于目前测试倡导低代码,无代码测试,且不是任何一个测试人员都掌握的编程基础。因此如果不会编程基础的同学来讲Selenium确实是需要一定的学习成本,由于Selenium仅支持代码形式来做自动化测试,无法提供可视化界面来进行测试。

没有内置的图像比较及处理等方案

Selenium本身对于图形处理能力较弱甚至并没有内置的图像处理及比较的解决方案,因此我们还需要自行去想办法解决图像相关的难题如:图形验证码,滑动块验证,Canvas

没有测试报告的能力

Selenium本身不具备测试报告能力,这因此我们也需要借助其他第三方框架或者自行对测试报告做些相对应的解决方案处理。

没有官方的技术支持

由于是社区开源贡献者开发的,无法进行找到对应的官方负责团队进行提供技术支持

Selenium的安装

1、下载Selenium模块:

pip install selenium==3.141.0

2、浏览器驱动下载

(1)Google浏览器驱动:https://sites.google.com/a/chromium.org/chromedriver/downloads

国内访问:http://chromedriver.storage.googleapis.com/index.html

(2)firefox浏览器驱动:https://github.com/mozilla/geckodriver/releases

(3)IE浏览器驱动:http://selenium-release.storage.googleapis.com/index.html

(4)edge浏览器驱动:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

配置驱动环境

要想Selenium Client能找到驱动程序有二种方式:

第一指定驱动路径(不配置PATH环境变量):

from selenium import webdriver browser = webdriver.Chrome(executable_path="D:\drivers\chromedriver.exe",options=options)

设置环境变量

配置Python根目录环境,即可实现无需传递驱动程序的指定位置来启动webdriver

我的电脑 -> 属性 -> 高级系统设置

初识Selenium

第一个selenium脚本

我们现在可以开始创建和运行自动化测试脚本了,就从Selenium WebDriver开始,然后创建一个Python脚 本,用Selenium WebDriver提供的类和方法模拟用户与 浏览器的交互。

我们会使用一个自行开发的Web应用程序,来完成我们后续的所有的实操示例。

一个简单的登录示例:

from selenium import webdriver import time # 实例化 webdriver browser = webdriver.Chrome() # 最大浏览器尺寸 browser.maximize_window() # 浏览器输入url,并传送至指定的url页面 browser.get(url="http://127.0.0.1:8066/") login_btn = browser.find_element_by_id("login-btn") login_btn.click() username = browser.find_element_by_id('username') pwd = browser.find_element_by_id('password') btu = browser.find_element_by_xpath('//*[@id="app"]/div[3]/div[2]/div[2]/button') username.send_keys("13453001") pwd.send_keys("123456") btu.click() time.sleep(10) browser.quit()

使用Python的IDLE来作为今后的练习环境,对初学者来说是一个极佳的学习体验。

该环境也称为Python交互式环境,后续我们做项目的时候再来使用其他编辑器开发,学习,练习我们将使用交互式环境。

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 17:16:00

SIEMENS 6SL3210-1PE33-0CL0 变频器

常见故障及解决方法‌通信故障‌‌原因‌:通信线路松动、参数设置错误(如波特率、设备名称不匹配)或接口损坏。‌解决‌:检查线路连接,核对参数一致性,更换损坏接口。‌过流/过压/欠压‌‌过流‌&#xff1…

作者头像 李华
网站建设 2026/6/23 13:11:40

软件测试常用的7种方法,最后一个是升职加薪关键!(零基础小白转行IT互联网高效进阶)

一般而言,软件测试方法分为黑盒测试、白盒测试、灰盒测试、静态测试、动态测试、手动测试、自动化测试和探索性测试等类型。 【1】黑盒测试 黑盒测试又称功能测试、数据驱动测试或基于需求规格说明书的功能测试。该测试方法验证被测对象使用质量及外部质量表现。 …

作者头像 李华
网站建设 2026/6/23 17:16:02

【RTOS】EasyLog的移植与使用

当前log的突出问题: ①log不方便定位到源程序所在位置 ②log不分主次,比较难生成想要的信息 1. 彩色log 1.1 编译器内置宏:__FILE__,__LINE__ led1下直接打印出当前文件的行号和名字 led2复制粘贴过来,改一下引脚 实验现象 哎…

作者头像 李华
网站建设 2026/6/23 17:13:45

在数据库里玩“平行宇宙”:MatrixOne Data Branch 让数据也拥有Git 的分支/合并/对比/回滚(含跨集群同步)

这篇文章讲一件事:当数据像代码一样频繁迭代时,数据库内生的“分支工作流”会比备份/复制更可靠、更省钱、更工程化。 1. 从一个真实的“数据事故现场”开始 当你的 AI 模型不慎清空了核心数据库,或者错误地注入了大量虚假数据,传…

作者头像 李华
网站建设 2026/6/23 1:57:18

基于单片机的全自动洗衣机系统的设计

基于单片机的全自动洗衣机系统的设计 第一章 引言 传统洗衣机依赖人工手动控制进水、洗涤、漂洗、脱水等流程,操作繁琐且水资源与电能浪费严重。随着智能家居技术的发展,全自动洗衣机成为家庭生活的主流需求,其核心在于通过智能控制实现洗衣流…

作者头像 李华
网站建设 2026/6/23 13:36:48

5.6 模型部署与智能体集成实战

5.6 模型部署与智能体集成实战 直播导语:同学们,欢迎来到我们《Agentic AI 智能体开发行动营》的最后一次直播课!在过去的五周里,我们一起经历了一段非凡的旅程:从 Function Calling 的“第一次接触”,到 LangGraph 的“图之思维”,再到“旅小智”的“全栈出海”,最终我…

作者头像 李华