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)定位
更不稳定,不推荐
⑤根据Link_text去定位元素
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()

