【python】selenium实现web自动化测试

1.selenium介绍

selenium主要是用来做web自动化的框架,是一套操控浏览器的自动化工具

它提供了python能用的程序库,让代码代替人去打开浏览器进行一系列的操作。

2.selenium驱动安装

  • 终端通过pip install selenium 安装selenium
  • 你要测哪个浏览器就去确定浏览器版本
  • 下载对应版本的webdriver
  • 将下载好的驱动文件放在python目录下(省去配置环境的操作)
  • 不知道python在哪去终端写:where python

3.实际基础操作

  • 在python中操作,先导入包

  • 再初始化webdriver

  • 然后访问url

4.八大定位方法

定位方法就是我们实际拿到网页进行访问时,如何定位到我们目标的操作地点,比如文本框,链接按钮等

我们基本的语句是这样:

find_element,后面的XX是接下来讲的定位方法,在后面就是定位的具体内容

想获得测试网页的定位具体内容,也就是前端的实现代码中的具体内容

可以打开浏览器自带的开发者工具 ,或者直接右键目标测试模块点击检 查直接找到对应代码

①根据id去定位元素

python 复制代码
find_element(By.ID, "element_id")

id是具有唯一性的,很好用

但有些元素是没有id的,不通用,可以优先考虑

②根据name去定位元素

python 复制代码
find_element(By.NAME, "element_name")

name也好用,但名字不具有唯一性,可以多次出现

得保证name值唯一,否则定位失败

③根据class_name去定位元素

python 复制代码
find_element(By.CLASS_NAME, "class_name")

class是元素的类名,更不具有唯一性

不推荐

④根据tag_name去定位元素

python 复制代码
find_element(By.TAG_NAME, "Tag Name")

这个是通过标签名称(html tag)定位

更不稳定,不推荐

python 复制代码
find_element(By.LINK_TEXT, "Link Text")

这个是通过超链接的文字来定位,只使用在链接位置处

只能用精准的匹配,也就是得告诉它目标链接处的全名(对应名字,比如'分类'等),不支持模糊查找

好用,推荐

⑥根据partialLinktext去定位元素

python 复制代码
find_element(By.PARTIAL_LINK_TEXT, "LinkText")

这个和link_text类似,但这个可以进行模糊查找

⑦根据CSS去定位元素

python 复制代码
find_element(By.CSS_SELECTOR,"css_selector")

CSS定位是通过元素的CSS属性进行定位,

定位速度快

⑧根据去xpath定位元素

python 复制代码
find_element(By.XPATH, "xpath")

xpath是根据路径来定位的,分绝对路径和相对路径

这个就相当于把你要测的点直接盒了,照着地址找到目标测试点

挺好用

5.操作元素信息

这里我们说的操作就是在找到find_element之后要测试什么操作,比如点击某个地方,输入文字等等

①输入信息

python 复制代码
send_keys("输入信息")
clear()清除原来的信息

②展示文本内容

text展示

可以对打印的数据进行断言来判断是否和预期的一致

③点击页面

左键点击:click()

右键点击:context_click()

④等待

因为有时我们一个操作完成可能会跳转新页面或者加载新内容,中间需要时间,而我们单纯写代码它只会依次执行,不会停下来,我们有两种方式做到等待

  • 直接等待 time.sleep(几秒)
    这种作用是暂停整个程序,单纯的等待时间,适合我们去本地调试观察结果
  • 显式等待 WebDriverWait + until(EC)
    定义:专门盯着某一个元素,直到它满足条件(能点击/出现),最多等N秒,没满足就报错。
    我们针对单个元素进行自定义,会设置一个有限时间,在期间内完成操作就结束等待,如果没有完成操作到时间就报错,结束运行,很适合我们的测试。

    这个显式等待需要先进行导包:
python 复制代码
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
python 复制代码
wait = WebDriverWait(driver,10)#创建一个等待对象driver,最大等待时间10秒

#这个wait要搭配until使用(直到满足条件为止)
res = wait.until(EC.element_to_be_clickable((By.LINK_TEXT,'网络游戏')))
#一旦找到就绪元素,就把这个网页控件赋值给这个res
#后面就可以对这个找到的控件执行操作了👇
res.click()#点击操作

完整一句话流程

1.打开浏览器打开网页

2.创建等待工具:最多等 10 秒

3.循环检测:这个搜索框能不能点击

4.一旦可以点击 → 停止等待,拿到这个输入框

5.输入文字

6.如果 10 秒还不行 → 程序报错停止

⑤关闭浏览器

.close():关当前标签页 ,局部关闭

.quit():关掉整个浏览器 + 驱动程序,完全结束

使用建议

  • 脚本运行完毕、程序收尾:统一用 driver.quit(),防止后台残留驱动占用资源
  • 多窗口切换,只关闭其中一个页面:用 driver.close()
相关推荐
Highcharts.js1 小时前
甘特图纵向任务、横向时间显示图表可视化开发|Highcharts甘特图示例
开发语言·前端·javascript·可视化·甘特图·数据可视化·highcharts
卷无止境1 小时前
从脚本到程序:Windows平台上的Python打包全景图
后端·python
my05921 小时前
市场学习,不止看资讯,数据查阅与思维练习同样重要
python·学习
黑科技工坊1 小时前
2026年口碑载道:铝面板定制供应商优选指南
大数据·人工智能·python
ai小陈1 小时前
PyTorch实验可复现实战:随机种子、依赖锁定与配置归档
人工智能·pytorch·python·深度学习·ai·gpu算力
郝学胜-神的一滴1 小时前
C++11 工程级应用 08:Lambda表达式与Tuple元组
开发语言·jvm·c++·python·程序人生·开源
yume_sibai1 小时前
Element Plus 导航与反馈组件完全指南(15个核心组件)
前端·elementui·交互
岁月宁静1 小时前
三、《从零手撸 Agent》 · system prompt 与核心参数:调好你的旋钮
后端·python·agent
卷无止境1 小时前
除了写代码,AI智能体还能帮开发者做什么
人工智能·python