一、自动化相关概念知识
1. 自动化
(1)概念
由机器设备代替人工完成指定目标的过程
(2)优点
减少人工劳动力
提高工作效率
产品规格统一标准
规模化(批量生产)
2. 自动化测试
(1)概念
概念:让程序或工具代替人工去验证程序功能验证的过程
(2)解决
- 回归测试(重点)
回归测试:项目在发新版本之后对项目之前的功能进行验证- 压力测试
压力测试:可以理解多用户同时去操作软件,统计软件服务器处理多用户请求的能力- 兼容性(浏览器、分辨率、操作系统)
兼容性测试:不同浏览器(IE、Firefox、Chrome)等等- 提高测试效率
(3)优点
- 较少的时间可以运行较多的测试用例
- 自动化脚本可重复运行[持续集成]
- 减少人为的错误
- 克服手工测试的局限性[诸如-图片大小]
(4)误区
- 自动化测试可以完全替代手工测试(×)[图片、配置文件…注意:自动化覆盖了仅占有接近60%]
- 自动化测试一定比手工测试厉害(×)
- 自动化测试可以解决更多的bug(×)
- 自动化测试适用于所有功能(×)
(5)自动化测试分类
- Web-自动化测试(本阶段学习)
- 移动-自动化测试
- 接口-自动化测试
- 单元测试-自动化测试
3. Web自动化测试
概念:让程序代替人工自动验证Web项目功能的过程
(1)适合做web自动化测试的项目
- 需求变动不频繁的
- 项目周期长的
- 项目需要回归测试
(2)Web自动化测试在什么阶段开始
功能测试完毕(手工测试)
(3)Web自动化测试所属分类
- 黑盒测试(功能测试)
- 白盒测试(单元测试)
- 灰盒测试(接口测试)
Web自动化测试属于黑盒测试(功能测试)
4 Web自动化测试工具选择
1. 主流的Web自动化测试工具
- QTP:收费,支持web、桌面软件自动化
- selenium:免费 开源 只支持web应用
- robot frameword:基于python扩展按键自驱动自动化工具,14年停更
2. selenium 英[səˈliːniəm]
(1)特点
- 开源软件:源代码开放可以根据需要来增加工具的某些功能 [不等价于免费]
- 跨平台:linux、windows、mac
- 支持多种浏览器:Firefox、Chrome、IE、Edge、Opera、Safari等
- 支持多种语言:Python、Java、C#、JavaScript、Ruby、PHP等
- 成熟稳定:目前已经被google、百度、腾讯等公司广泛使用
- 功能强大:能够实现类似商业工具的大部分功能,因为开源性,可实现定制化功能
(2)selenium 版本介绍
-
selenium 1.0
① selenium IDE (录制自动化代码工具)
② selenium Grid(分布式工具,同时启动多个浏览器)
③ selenium RC(通过js模拟浏览器,实现自动化方式) -
selenium 2.0(稳定推荐版本)
selenium 2.0 = selenium 1.0 + webdriver -
selenium 3.0
2.0升级版,支持java8、Windows10 Edge浏览器、ssfa浏览器 -
提示:无论通过2.0 /3.0编写的自动化脚本,API方法都是不变的,唯一的不同是环境不同。
(3)selenium 使用
from time import sleep
# 1. 导webdriver包
from selenium import webdriver
# 2. 获取浏览器对象【首字母大写】
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
sleep(3)
# 3. 退出浏览器驱动
driver.quit()
二、自动化相关环境搭建
1. selenium
-
安装selenium包
pip install selenium
;
卸载pip uninstall selenium
,
查看版本pip show selenium
; -
安装浏览器驱动
① 火狐浏览器 驱动下载地址
② 谷歌浏览器 驱动下载地址
查看谷歌浏览器版本,网页输入chrome://version/
-
应用
① 将浏览器驱动放在指定文件夹
② 将浏览器驱动所在目录添加到系统path环境变量中(我的电脑–属性–高级系统设置–高级(环境变量)–path) -
pycharm直接安装
file – setting – 当前工程 – project interpreter – 点击 + 安装相应版本
如果使用 pip install 包名,导包import找不到时,说明pip默认安装路径与当前工程的环境路径不一致,进行上述处理即可解决。
2. path 补充
- 指定系统的搜索目录
- dos命令默认搜索顺序
① 检测是否为内部命令
② 检测是否为当前目录下的可执行文件
③ 检测path环境变量指定的目录- 提示:
① 如果以上搜索目录都检测不到输入的命令或可执行文件,系统会抛出内部或外部命令
② 在web环境中,如果不将浏览器驱动添加到path中,selenium在运行时会显示浏览器驱动有误。
三、元素定位
0. 补充
(1)本地url地址的转换
# \ 反斜杠-python中指转义字符;r 修饰字符串,不将反斜杠作为转义字符使用
url = r"F:\00大三\下学期\科三\假期\Bai\Ajax\03图书管理.html"
# 添加 双反斜杠 进行转义操作
url = "F:\\00大三\\下学期\\科三\\假期\\Bai\\Ajax\\03图书管理.html"
# 使用本地浏览器打开后 复制链接 在前面加上 file:///
url = "file:///F:/00%E5%A4%A7%E4%B8%89/%E4%B8%8B%E5%AD%A6%E6%9C%9F/%E7%A7%91%E4%B8%89/%E5%81%87%E6%9C%9F/Bai/Ajax/03%E5%9B%BE%E4%B9%A6%E7%AE%A1%E7%90%86.html"
1. 元素定位方式 (八种)
- id
基于元素属性
- name
基于元素属性
- class_name
基于元素属性
- tag_name
基于标签
- link_text
定位a标签
- partial_link_text
定位a标签
- XPath
基于元素路径定位
- CSS
基于元素选择器定位
(1)id 定位
- 方法:
element = driver.find_element(By.方法名, “value”)
4.x版本 - 案例操作步骤
- 导包
from selenium import webdriver
- 导入By模块
from selenium.webdriver.common.by import By
- 获取浏览器对象
driver = webdriver.Chrome()
- 打开url
driver.get(url)
- 捕获查找
element = driver.find_element(By.ID, "Id name xxxx")
- 输入对应值
element.send)keys("xxx")
- 关闭驱动
driver.quit()
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
# \ 反斜杠-python中指转义字符;r 修饰字符串,不将反斜杠作为转义字符使用
url = r"F:\00大三\下学期\科三\假期\Bai\Ajax\03图书管理.html"
driver.get(url)
bookname = driver.find_element(By.ID, "bookname")
bookname.send_keys("《书名》")
sleep(3)
driver.quit()
(2)name 定位
- 举例:
driver.find_element(By.NAME,"xxx").send_keys("根据name定位")
(3)class_name 定位
- 举例:
driver.find_elements(By.CLASS_NAME, "xxx")
(4)tag_name 定位
- 标签名匹配
- 举例:
driver.find_element(By.TAG_NAME, "input")
(5)link_text 定位
- 全部a标签