测试基础笔记第十六天
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、UI自动化介绍
- 1.认识UI自动化测试
- 2.实施UI自动化测试前置条件
- 3.UI自动化测试执行时机
- 4.UI自动化测试核心作用和劣势
- 二、认识Web自动化测试工具-Selenium02
- 1.Selenium 特点
- 2.Selenium 核心组件
- 3.Web自动化测试环境搭建步骤
- 1.导包
- 三、入门案例
- 1.自动登录
- 四、CSS选择器定位
- 1.认识CSS定位
- 2.css选择器
- 3.CSS定位-层级选择器
- 4.表单自动化
- 5.元素属性定位
一、UI自动化介绍
1.认识UI自动化测试
- UI:User Interface,简称UI,用户界面是系统和用户之间进行交互和信息交换的媒介
- UI自动化测试:使用程序、脚本对系统界面体现的功能和数据信息展示等进行的测试技术
- 为什么要自动化测试:
- 大量的版本需要回归测试
- 手工回归测试效率比较低
- 测试工程师价值得不到体现
2.实施UI自动化测试前置条件
- 项目需要实施UI自动化测试需要满足以下前置条件
1.项目上线发布频率高,回归测试任务重
2.项目需要实现自动化的功能模块,需求变更不频繁
一般只实现核心功能模块
3.项目周期要长
公司自研或者公司核心产品
3.UI自动化测试执行时机
- 一般情况下在手工测试完成之后
- 版本或项目功能趋于稳定
4.UI自动化测试核心作用和劣势
- 项目实现UI自动化测试后:
1.节省人力成本:回归测试工作由脚本代替人去执行
2.提高回归测试效率:脚本执行测试速度更快
3.提高测试质量:一旦自动化脚本库完善后测试执行过程更标准和准确 - UI自动化测试劣势
1.对测试人员要求提高
2.前期投入成本大
3.对项目要求高
二、认识Web自动化测试工具-Selenium02
1.Selenium 特点
2.Selenium 核心组件
- Selenium-IDE
浏览器插件,录制脚本工具。支持脚本回放和导出。 - Selenium-Grid
分布式执行自动化测试用例工具,用于大批量测试用例
的执行 - Selenium-Webdriver
脚本编写核心工具,提供模拟手工操作的常用方法
3.Web自动化测试环境搭建步骤
- 安装包语法:pip install selenium
- 查看包语法:pip show selenium
- 卸载包语法:pip uninstall selenium
- 示例:通过程序启动浏览通过程序启动浏览器,并打开商城首页,暂停3秒,关闭浏览器,并打开百度首页,暂停3秒,关闭浏览器
1.导包
import time
from selenium import webdriver
#2.创建浏览器驱动对象
#Chrome浏览器:
driver = webdriver.Chrome()
#3.打开Web页面
driver.get(“https://hmshop-test.itheima.net/index.php”)
#4.暂停
time.sleep(3)
#5.关闭驱动对象
三、入门案例
1.自动登录
- 关键步骤:
- 打开浏览器
- 访问页面
- 页面操作
- 关闭浏览器
- 查找元素:element = driver.find_element(定位方法, 值)
- 元素操作:
输入:element.send_keys(value)
点击: element.click() - 步骤:
步骤:
1、导包
2、打开浏览器
3、访问页面
4、页面操作
① 用户名查找及操作
② 密码查找及操作
③ 验证码查找及操作
④ 登录按钮查找及操作
5、关闭浏览器
#1、导包
import time
from selenium import webdriver
#快捷导包 ctrl + alt + 空格
from selenium.webdriver.common.by import By
#2、打开浏览器
driver = webdriver.Chrome()
#窗口最大化
driver.maximize_window()
#3、访问页面
driver.get(“https://hmshop-test.itheima.net/Home/user/login.html”)
#4、页面操作
#用户名查找及操作
element = driver.find_element(By.ID, “username”)
element.send_keys(“13488888888”)
#密码查找及操作
element = driver.find_element(By.ID, “password”)
element.send_keys(“123456”)
#验证码查找及操作
driver.find_element(By.ID, “verify_code”).send_keys(“8888”)
#登录按钮查找及操作
driver.find_element(By.NAME, “sbtbutton”).click()
#5、关闭浏览器
time.sleep(3)
driver.quit()
四、CSS选择器定位
1.认识CSS定位
- css概念:(Cascading Style Sheets)是一种语言,用来描述HTML
元素的显示样式。 - 选择器:一种表达式,可以找到HTML中的标签元素。
- css定位概念:selenium利用选择器定位元素的定位方式。
- 方法:driver.find_elements(By.CSS_SELECTOR, 选择器表达式)
2.css选择器
- ID选择器:
| 说明:利用元素ID属性来选择
l 格式:#id属性值 - 类选择器
l 说明:利用类名来选择
l 格式:.类名 - 属性选择器
l 说明:利用标签的属性来选择
l 格式:HTML标签[属性=值]
l 局部属性:HTML标签[属性名*=‘局部属性值’]
3.CSS定位-层级选择器
- 父子关系:后代关系包含了父子关系,一般只需要记忆后代关系即可
概念:据元素的父子关系来选择元素。
表达式写法:element1>element2。 - 语法:
- 后代关系:
概念:根据元素的上级元素来选择元素(只要是目标元素上层元素即可)
表达式写法:element1 element2。 - 语法:
4.表单自动化
- 能够通过CSS选择器定位到页面元素
- 能通过id,class进行元素定位,并实现输入框自动输入及自动清除
- 案例:
- 代码:
#导包
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
#打开浏览器
driver = webdriver.Chrome()
driver.maximize_window()
#打开页面
driver.get(“https://hmshop-test.itheima.net/Home/user/reg.html”)
#页面操作
#手机号码:#username
driver.find_element(By.CSS_SELECTOR, “#username”).send_keys(“13612330001”)
#图像验证码:.inp.imgcode.J_imgcode
driver.find_element(By.CSS_SELECTOR, “[name=‘verify_code’]”).send_keys(“8888”)
#设置密码:#password
driver.find_element(By.CSS_SELECTOR, “#password”).send_keys(“123456”)
#确认密码:#password2
driver.find_element(By.CSS_SELECTOR, “#password2”).send_keys(“123456”)
#推荐人手机:.inp.fmobile.J_cellphone
driver.find_element(By.CSS_SELECTOR, “[name=‘invite’]”).send_keys(“13488888888”)
#我已阅读并同意《用户服务协议》:
#同意协议并注册:.regbtn.J_btn_agree
driver.find_element(By.CSS_SELECTOR, “.regbtn.J_btn_agree”).click()
time.sleep(3)
#退出浏览器
driver.quit()
5.元素属性定位
- id定位: driver.find_element(By.ID, “id属性值”)
- class定位: driver.find_element(By.CLASS_NAME, “class属性值”)
- name定位: driver.find_element(By.NAME, “name属性值”)
- 案例:
#导入工具包
import time
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver, quit_driver
import random
#获取驱动、并实现页面元素定位与操作
driver = get_driver(“https://hmshop-test.itheima.net/Home/user/reg.html”)
##username
#driver.find_element(By.CSS_SELECTOR, “#username”).send_keys(“13633331001”)
#引入随机数解决手机号唯一性问题
driver.find_element(By.ID, “username”).send_keys(f"136{random.randint(20000000,
88887777)}“)
#.inp.imgcode.J_imgcode
driver.find_element(By.CLASS_NAME, “imgcode”).send_keys(“8888”)
##password
driver.find_element(By.ID, “password”).send_keys(“123456”)
##password2
driver.find_element(By.ID, “password2”).send_keys(“123456”)
#[name=‘invite’]
driver.find_element(By.NAME, “invite”).send_keys(”")
#.regbtn.J_btn_agree
time.sleep(2)
driver.find_element(By.CLASS_NAME, “J_btn_agree”).click()
#退出浏览器
quit_driver(driver)