文章目录
- 概念
- web测试
- selenium的工作原理
- selenium的常用函数
- 元素定位
- 操作测试对象
- 窗口
- 弹窗
概念
自动化的类型很多,那选择哪一种测试的收益是比较好的呢?
这里引出一个自动化测试金字塔
理想的自动化测试金字塔表达了自动化测试的理想状态,就是用较少的时间和精力在单元测试上,就能发现更多有效的问题,在实际的自动化测试中是这样:
web测试
在实际的测试中,需要对于一个特定的软件进行自动化的测试,包含但是不限于有软件所有界面的UI自动化测试,所有接口的接口自动化测试,而下面也主要是进行web自动化测试
这里主要是使用Selenium来进行自动化测试,安装一下必要的内容:
pip install webdriver-manager
pip install selenium==4.0.0
创建项目,查看一下是否符合要求:
看到有这两个包,就说明没问题了~
接下来,尝试编写脚本的第一个代码:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
# 创建驱动对象
# 打开浏览器
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
# 输入百度网址
driver.get("https://www.baidu.com")
# 搜索框输入内容
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("C++")
# 点击百度一下
driver.find_element(By.CSS_SELECTOR, "#su").click()
# 关闭浏览器
driver.quit()
这段代码的基本含义就是打开浏览器,找到输入框,输入值,搜索,然后关闭,关于详细内容后续再进行更多的讲解
selenium的工作原理
实现web的自动化测试需要浏览器,浏览器驱动,selenium自动化脚本,那这三个模块是如何进行搭配使用的呢?
使用selenium编写的自动化脚本代码,会在ChromeDriverService中创建一个服务,之后通过这个服务来打开webdriver,安装在本地的驱动服务,之后会发送一个Http的请求,发送请求后浏览器驱动程序就会解析请求,然后打开浏览器,获取sessionID
之后所有的selenium的操作都会通过这个连接好的服务链接到webdriver,然后使用execute来进行请求的发送,之后驱动收到请求后对于请求进行解析,转换成浏览器可以解析的脚本并发送给浏览器,浏览器通过请求的内容进行操作
浏览器把执行的结果通关浏览器驱动程序返回给测试脚本
selenium的常用函数
元素定位
web自动化测试的操作核心,就是能够找到页面对应的元素,然后就能对于元素进行具体的操作,那如何进行元素的定位?常用的定位方式有cssSelector和xpath
cssSelector
这个是选择器,它的主要功能是可以选中页面中指定的标签元素,选择器的种类有基础选择器和复合选择器,常见的元素定位方式有ID选择器和子类选择器来进行定位
利用定位工具进行定位:
此时就可以获得这个选择器的值是多少
xpath
在XML路径语言,不仅可以在XML文件中查找信息,还可以在HTML中选择节点
xpath使用路径表达式来选择xml文档中的节点
下面讲述xpath的规则:
- 获取HTML网页所有的节点:
//*
- 获取HTML网页指定的节点:
//[指定节点]
- 获取一个节点中的直接子节点:
/
- 获取一个节点的父节点:
..
- 实现节点属性的匹配:
[@...]
操作测试对象
获取到了页面的元素之后,下一步是对于元素进行操作,常见的操作有点击,提交,输入,清除,获取文本
- 点击:click()
- 模拟输入:send_keys(“”)
- 清除文本内容:clear()
- 获取文本信息:text
- 获取页面标题:title
- 获取页面URL:current_url
窗口
对于窗口来说,常用的操作有:
- 切换窗口
- 窗口大小设置
- 屏幕识图
弹窗
弹窗在页面中是没有任何元素的,处理的方式可以使用selenium提供的alert接口