一.自动化测试简介
1.自动化测试是一种把人工驱动的测试行为转化为机器执行的测试过程。
2.使用自动化测试需要满足的3个条件:
(1)项目需求变动不频繁
(2)项目进度压力不大,时间不紧迫
(3)多种浏览器或平台上可以重复运行相同的测试脚本
3.自动化测试的优点
(1)提高回归测试的效率
(2)提高测试人员的利用率
(3)提高测试的精确度
(4)提高测试的便捷性
4.自动化测试的缺点
(1)不能提高测试的有效性
(2)发现的缺陷比人工测试少且不容易发现新的缺陷
二.自动化测试的常见技术
1.录制与回放技术
2.脚本技术
(1)线性脚本
(2)结构化脚本
(3)共享脚本
3.数据驱动技术
(1)关键字驱动
(2)行为驱动
三.搭建自动化测试环境
1.安装Python解释器和PyCharm
2.安装Selenium
点击设置
点加号
在搜索栏输入selenium
点击selenium然后安装就可以了
3.安装浏览器驱动
1.在Web自动化测试中,浏览器驱动通过PyCharm中的测试脚本转换为浏览器能够识别的指令来模拟用户操作网页,浏览器在接收到指令后,会通过浏览器驱动将操作结果返回到PyCharm的控制台。每一种浏览器都需要有一个特定的浏览器驱动,例如,Chrome浏览器驱动是chromedriver.exe,Firefox浏览器驱动是geckodriver.exe,IE驱动时IEDriverServer.exe
2.下面以Chrome浏览器为例,操作chromedriver.exe驱动的下载和安装过程
(1)查看Chrome版本信息
点击3个点
点击帮助,点击关于Google Chrome
(2)下载Chrome浏览器驱动
chromedriver 115及115之后版本下载地址:
Chrome for Testing availability (googlechromelabs.github.io)
四.Selenium工具的基本应用
(一)Selenium元素定位方法
find_element()方法中有两个参数,第一个参数by表示元素定位的类型,有By模块提供,默认通过ID属性来定位;第二个参数value表示元素定位类型的属性值。
from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome()
url = "http://hmshop-test.itheima.net/"
driver.get(url)
driver.find_element(By.CLASS_NAME,"c-n")
下面列举调用find_element()方法定位元素的实例代码,具体如下。
driver.find_element(By.ID,"userA")
driver.find_element(By.NAME,"passwordA")
driver.find_element(By.CLASS_NAME,"telA")
driver.find_element(By.TAG_NAME,"input")
driver.find_element(By.LINK_TEXT,'访问 新浪 网站')
driver.find_element(By.PAPTIAL_LINK_TEXT,'访问')
driver.find_element(By.XPATH,'//*[@id="emailA"]')
driver.find_element(By.CSS_SELECTOR,'#emailA')
(二)Selenium常用的操作方法
1.元素的常用操作方法
方法 | 说明 |
send_keys(*value) | 输入操作方法,该方法中的参数表示输入的内容 |
clear() | 清空操作方法 |
submit() | 提交表单操作方法 |
click() | 点击操作方法 |
get(url) | 获取操作方法,url表示Web页面的资源路径 |
get_screenshot_as_file(filename) | 截图操作方法,filename是页面截图后存储的绝对路径 |
2.浏览器的常用操作方法
方法 | 说明 |
maximize_window() | 设置浏览器窗口为最大化 |
minimize_window() | 设置浏览器窗口为最小化 |
close() | 关闭浏览器窗口 |
quit() | 关闭浏览器所有窗口并退出浏览器驱动 |
3.元素等待的3种方法
(1)强制等待
强制等待通过调用sleep(seconds)函数让程序休眠一段时间,到达时间后程序再运行。函数中的参数seconds表示等待的时间,时间单位默认为秒。
(2)隐式等待
隐式等待指定位页面元素时,如果能定位到元素,则测试程序直接返回该元素,不触发等待;如果定位不到该元素,则需要等待一段时间后再定位;如果超过程序设置的最长等待时间还没有定位到指定元素,则程序会抛出元素不存在的异常(NoSuchElemenException)。在程序中设置隐式等待时间需要调用implicity_wait(timeout)方法,该方法中的参数timeout表示隐式等待的最长等待时间,单位为秒。
(3)显式等待
显式等待是指定位指定元素时,如果能定位到指定元素,则测试程序直接返回该元素,不触发等待;如果定位不到指定元素,则需要等待一段时间后再重新进行定位;如果超过程序设置的最长等待时间还没有定位到指定元素,则程序会抛出元素超时异常(TimeoutException)。实现显式等待需要调用的方法为WebDriverWait(),在程序中进行显式等待时,WebDriverWait()方法必须与until()方法或until_not()方法结合使用。
注:
until()方法用于调用一个查找元素的匿名函数,如果该函数的返回值为True,表示查找到元素;如果该函数的返回值为False,表示未查找到元素。当未查找到元素时,程序会每隔一段时间调用一次until()方法查找元素,直到查找到元素为止。
until_not()方法也用于调用一个查找元素的匿名函数,如果该函数的返回值为True,表示未查找到元素;如果该函数的返回值为False,表示查找到元素。当未查找到元素时,程序会每隔一段时间调用一次until()方法查找元素,直到查找到元素为止。