概念

自动化的类型很多,那选择哪一种测试的收益是比较好的呢?

这里引出一个自动化测试金字塔

在这里插入图片描述
理想的自动化测试金字塔表达了自动化测试的理想状态,就是用较少的时间和精力在单元测试上,就能发现更多有效的问题,在实际的自动化测试中是这样:

在这里插入图片描述

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的规则:

  1. 获取HTML网页所有的节点://*
  2. 获取HTML网页指定的节点://[指定节点]
  3. 获取一个节点中的直接子节点:/
  4. 获取一个节点的父节点:..
  5. 实现节点属性的匹配:[@...]

操作测试对象

获取到了页面的元素之后,下一步是对于元素进行操作,常见的操作有点击,提交,输入,清除,获取文本

  1. 点击:click()
  2. 模拟输入:send_keys(“”)
  3. 清除文本内容:clear()
  4. 获取文本信息:text
  5. 获取页面标题:title
  6. 获取页面URL:current_url

窗口

对于窗口来说,常用的操作有:

  1. 切换窗口
  2. 窗口大小设置
  3. 屏幕识图

弹窗

弹窗在页面中是没有任何元素的,处理的方式可以使用selenium提供的alert接口

Logo

科技之力与好奇之心,共建有温度的智能世界

更多推荐