是不是用 Python 写 Selenium 自动化测试脚本时总碰壁?环境搭好了却跑不起来,控制台全是 “驱动未找到” 的报错;好不容易运行起来,脚本却总在 “点击按钮” 这步卡住,提示 “元素不可交互”;测试表单提交时,输入框明明填了内容,提交后却显示 “请输入必填项”。新手用 Selenium Python 做自动化测试,环境配置、元素定位、脚本逻辑每一步都可能踩坑。今天兔子哥就带大家从脚本编写到错误解决全流程实战,附详细案例和避坑指南,跟着学,你也能写出稳定的自动化测试脚本!
基础问题:为啥用 Python 学 Selenium 自动化测试?它真能提高效率?
可能有朋友会问:“自动化测试工具那么多,为啥偏偏选 Selenium Python?我手工测试做得好好的,有必要学这个吗?” 因为 Selenium 搭配 Python 简直是自动化测试的 “黄金组合”——Selenium 能控制浏览器做各种操作,Python 语法简单易上手,写脚本像写中文一样顺,新手入门门槛低。
手工测试做多了就知道,重复测同一个功能特别费时间,比如每次发版都要测登录、注册、下单这些流程,稍不留神就漏测。而自动化脚本一旦写好,点一下运行就能自动跑完所有步骤,还能生成报告,晚上下班前启动脚本,第二天上班直接看结果。网友 “测试小周” 说:“之前测一个电商网站,手工测完整流程要 2 小时,用 Selenium Python 写脚本后,5 分钟跑完还不出错,现在领导都让我多写几个脚本!” 所以别担心没用,学会了能省超多重复劳动。
环境搭建:3 步搞定,比装微信还简单
写脚本前得先搭好环境,这三步错一步,后面全白搭,新手跟着步骤来:
步骤 1:装 Python(脚本的 “发动机”)
Selenium 脚本用 Python 写,必须先装 Python:
- 去 Python 官网(python.org)下最新版,选 “Windows Installer (64-bit)”,别下成 Mac 版;
- 安装时一定要勾 “Add Python to PATH”(自动配环境变量,新手最容易漏!);
- 点 “Install Now” 一路下一步,装完打开 cmd,输 “python --version”,能看到 “Python 3.x.x” 就成了。
步骤 2:装 Selenium 库(测试的 “工具箱”)
打开 cmd,输一行命令就能装:
plaintext
pip install selenium回车等几分钟,出现 “Successfully installed selenium” 就成功了。如果提示 “pip 不是内部命令”,就是步骤 1 没勾 PATH,卸载重装时记得勾上,别偷懒。
步骤 3:下 Chrome 驱动(连接浏览器的 “钥匙”)
Selenium 得靠驱动控制浏览器,以 Chrome 为例:
- 先查 Chrome 版本:打开 Chrome→右上角三个点→设置→关于 Chrome,记版本号(比如 127.0.6533);
- 去 Chrome 驱动官网(chromedriver.chromium.org)下对应版本驱动,选和系统匹配的(Windows 选 win32,别管电脑是 32 还是 64 位);
- 解压后把驱动文件(chromedriver.exe)放 Python 安装目录(右键 Python 图标→“打开文件位置”,直接粘进去)。
| 环境组件 | 作用 | 新手踩坑点 | 解决办法 |
|---|---|---|---|
| Python | 运行脚本基础 | 没勾 PATH,找不到 Python | 重装时务必勾 “Add Python to PATH” |
| Selenium 库 | 提供测试功能 | pip 安装超时 | 用国内镜像:pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple |
| Chrome 驱动 | 控制浏览器 | 版本和 Chrome 不匹配 | 严格按 Chrome 版本下驱动,差一个号都可能报错 |
兔子哥提示:驱动版本必须和 Chrome 版本对应!比如 Chrome 是 127 版,驱动就得下 127 开头的,别下 126 或 128 版,不然肯定报错。
实战脚本:写个登录测试脚本,分 5 步走
以测试某网站登录功能为例,脚本实现 “打开登录页→输入账号密码→点击登录→验证是否登录成功”,步骤超详细:
步骤 1:分析页面元素(找 “按钮在哪”)
打开目标登录页,按 F12 打开开发者工具,点左上角箭头图标(选择元素):
- 用户名框:右键检查,记 id 是 “username”;
- 密码框:id 是 “password”;
- 登录按钮:id 是 “loginBtn”;
- 登录成功提示:class 是 “success-tip”(用来验证结果)。
步骤 2:写脚本代码(带详细注释)
在桌面新建 “login_test.py”,用记事本打开,写代码:
python
# 导入Selenium工具from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time# 启动Chrome浏览器driver = webdriver.Chrome()# 打开登录页(换成实际网址)driver.get("https://www.example.com/login")# 窗口最大化,避免元素被遮挡driver.maximize_window()# 等待2秒,让页面加载完time.sleep(2)# 输入用户名(替换成测试账号)driver.find_element(By.ID, "username").send_keys("test_user")# 输入密码(替换成测试密码)driver.find_element(By.ID, "password").send_keys("test_pass123")# 点击登录按钮driver.find_element(By.ID, "loginBtn").click()# 等待3秒,让登录完成time.sleep(3)# 验证是否登录成功:找成功提示try:# 如果找到成功提示,说明登录成功success_text = driver.find_element(By.CLASS_NAME, "success-tip").textprint("登录测试通过!提示:", success_text)except:# 没找到提示,登录失败print("登录测试失败!")# 等待5秒,看结果time.sleep(5)# 关闭浏览器driver.quit()步骤 3:运行脚本看效果
双击 “login_test.py”,会自动打开 Chrome,依次输入账号密码、点击登录,控制台会打印 “登录测试通过” 或 “失败”,成功啦!避坑点:
- 元素定位要用对方式,id 找不到就换 class 或 name,别死磕一种;
- 一定要加等待时间(time.sleep),页面没加载完就操作会报错;
- 网址、元素 id 要换成实际网站的,上面是示例,直接抄运行不了。
常见错误解决:90% 新手会踩的 5 个坑,这样解
写脚本时遇到这些错误别慌,照着方法改,很快就能解决:
错误 1:驱动版本不匹配,提示 “session not created”
现象:运行脚本弹窗报错,说 “this version of ChromeDriver only supports Chrome version X”。
原因:驱动版本和 Chrome 版本对不上,比如驱动是 126 版,Chrome 是 127 版。
解决方法:按步骤 3 重新查 Chrome 版本,下对应驱动,替换旧驱动文件。
错误 2:元素定位失败,提示 “no such element”
现象:脚本运行到找元素那步报错,说找不到 id 为 “username” 的元素。
原因:
- 页面没加载完就执行操作(最常见);
- 元素 id 写错了,或网页用了 iframe 框架(元素在 iframe 里直接找会失败)。
解决方法: - 加长等待时间,把
time.sleep(2)改成time.sleep(5); - 用 F12 重新检查元素 id,复制粘贴别手敲;
- 如果是 iframe,先切进去:
driver.switch_to.frame("iframe_id")。
错误 3:元素不可点击,提示 “element click intercepted”
现象:找到按钮了,但点击时报错,说 “另一个元素遮住了它”。
原因:按钮被弹窗、广告或加载动画挡住了,肉眼能看到但脚本点不了。
解决方法:
- 加更长等待时间,等遮挡元素消失;
- 用 JavaScript 点击(万能方法):python
btn = driver.find_element(By.ID, "loginBtn")driver.execute_script("arguments[0].click();", btn)
错误 4:输入内容后提交失败,显示 “请输入”
现象:脚本明明往输入框输了内容,提交后却提示 “请输入用户名”。
原因:输入框有隐藏验证,比如需要失去焦点(点一下其他地方)才生效。
解决方法:输入后点击页面空白处,触发验证:
python
driver.find_element(By.ID, "username").send_keys("test_user")# 点击空白处driver.find_element(By.TAG_NAME, "body").click()错误 5:脚本运行完浏览器秒关,看不到过程
现象:脚本执行很快,浏览器一闪就关了,不知道哪错了。
原因:脚本最后有
driver.quit(),运行完就关浏览器。解决方法:注释掉
driver.quit(),或加长等待时间:time.sleep(10)。自问自答:新手写测试脚本常见疑问
除了登录,还能测啥功能?有推荐的练手项目吗?
可以测注册(填表单、验证提示)、商品搜索(输入关键词、检查结果)、购物车(加商品、改数量)这些流程。新手推荐先练 “豆瓣登录 + 搜索图书”,页面元素简单,广告少,不容易踩坑。
不用 time.sleep,有更智能的等待方法吗?
有!用显式等待,等元素出现再操作,比固定 sleep 更灵活:
python
from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC# 等用户名框出现(最多等10秒)username_box = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "username")))username_box.send_keys("test_user")不过新手先学好 time.sleep,再学显式等待,一步一步来。
学会这个能找测试相关的工作吗?需要学其他工具吗?
当然能!现在企业招自动化测试工程师,基本都要求会 Selenium Python。但光会这个不够,还得学测试理论、HTML/CSS(懂元素定位)、Jenkins(自动运行脚本),不过先把 Selenium 练熟,找个初级测试岗没问题。
最后说点实在话
用 Python 写 Selenium 自动化测试脚本,刚开始觉得难很正常,环境搭不对、元素找不到、脚本跑失败都是必经之路。我刚开始学的时候,驱动版本不对折腾了一下午,元素定位错了改了七八次才成功。但当看到脚本自动完成登录、打印测试结果时,那种成就感真的不一样。
别想着一口吃成胖子,先把登录、搜索这些简单流程练熟,再慢慢加功能,比如截图、生成报告。遇到错误别慌,把报错信息复制到百度搜,大部分问题前辈们都遇到过。测试这行,实践出真知,脚本写得多了,你会越来越熟练,甚至能帮同事写脚本提高团队效率。现在就打开电脑,按步骤搭环境、写第一个登录脚本,动手练才是最快的入门方法!
标签: python.org 控制台
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~