前言
-
这一章节用到很多之前的测试知识具体请查看
-
CSDN测试案例源码在最后
-
说实话,今天北京有点冷~~~
自动化测试+小案例
认识自动化Web测试
为什么要进行 自动化 测试
- 很多场景 在项目未上线之前 或者 上线之后 是单独手动测试无法实现的场景(由于各种原因)比如:
- 回归测试
- 压力测试
- 兼容性测试
- 自动化测试开始的阶段:手动测试结束之后,因为手动测试更容易以普通用户的角度来进行测试,而且手动测试比自动化测试肯能发现的缺陷更多。
主流测试工具介绍
-
QTP(收费)—>http://www.tutorialspoint.com/qtp/qtp_overview.htm
QTP是商业的功能测试工具,收费,支持web,桌面自动化测试。 -
Selenium(开源)—>https://www.selenium.dev/
Selenium是开源的web自动测试工具,免费,主要做功能测试。 -
Jmeter(开源、Web、接口、性能, 接口测试使用)—>https://jmeter.apache.org/
Jmeter是由Apache公司使用Java平台开发的一款测试工具 !!!Web测试在通信层(无UI界面)!!! -
Loadrunner(收费、Web、性能)—>http://learnloadrunner.com/
Loadrunner是商业性能测试工具,收费,功能强大,适合做复杂场景的性能测试 -
Robot framework —>https://robotframework.org/
Robot Framework是一个基于Python可扩展地(关键字驱动)的测试自动化框架 -
按照适用平台划分
Web自动化测试:selenium、robot framework App端自动化测试:Appium、Monkeyrunner、UIautomation PC客户端(win32)自动化测试:QTP 接口自动化测试:Jmeter、Postman、httpUnit、RESTClient 云测平台:Testin Testbird 性能测试:Jmeter、LoadRunner
Selenium
认识selenium
一、介绍
selenium:硒 一个主要做功能测试的web应用程序的测试工具
二、特点
- 开源
- 跨平台:linux、windows、mac
- 多语种支持、多浏览器支持
环境准备
selenium 需要搭配搭配 webdriver库使用
一、认识WebDriver
- Webdriver (Selenium)是一种用于Web应用程序的自动测试工具
- Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动
二、WebDriver支持的浏览器
Chrom、IE、Opera、Firefox、Safari、HtmlUnit
注意:
- Firefox、Chrome:对元素定位和操作有良好的支持,同时对JavaScript支持也非常好。
- IE:只能在windows平台运行,所有浏览器中运行速度最慢
- HtmlUnit:无GUI(界面)运行,运行速度最快;
支持的开发语言:Java、Python、PHP、JavaScript、Perl、Ruby、C#
三、安装
安装selenium时,前提是Python3.5以上版本安装完毕且能正常运行
selenium:pip install selenium
WebDriver:下载地址http://www.seleniumhq.org/download/
- 下载后首先解压
- Linux:unzip
- windows:右击解压
- 解压后的可执行文件 放到固定文件夹 使用的时候指定webdriver的绝对路径即可
- 或者将可执行文件添加到环境变量中也可以
四、使用基本流程
# 模拟打开某个网页的 点击按钮操作
# 1.导包
from selenium import webdriver
# 2.实例化driver --浏览器不同driver也不同 这里使用的是Chrome
driver = webdriver.Chrome('./chromedriver')
# 3.发请求 GET或者POST等其他请求
driver.get(url)
# 4.获取摸个定位标签
regiter_btn =driver.find_element_by_class_name('')
# 5.点击按钮 click()方法
regiter_btn.click()
# 6.关闭浏览器 quit()方法
driver.quit()
定位方式
0、为什么要定位元素
对HTML中的元素定位,目的是为了作为一个锚点,快速定位要进行操作的具体的要操作的网页元素,只有定位之后才能进行其他操作(点击、输入等)
一、HTML元素定位
driver.find_element_by_xxx() driver.find_element(by=By.定位元素,value=‘定位元素值’) 两种查询定位的方式返回的都是 WebElement对象 可以实现二次查找 返回 list[]
- 元素属性定位:id、name、class_name:
- 元素标签名称定位:tag_name
- 超链接定位(a标签):link_text、partial_link_text
"""
6种定位方式
id, name, class_name, tag_name, link_text, partial_link_text
"""
# 1.导包
from selenium import webdriver
# 2.实例化
driver = webdriver.Chrome('./chromedriver.exe')
# 3.发请求
driver.get('http://www.baidu.com')
# 4.查找元素 elenium.webdriver.remote.webelement.WebElement
element = driver.find_element_by_id('s_menu_mine')
# element = driver.find_element_by_name('tj_settingicon')
# element = driver.find_element_by_class_name('s-top-right-text c-font-normal c-color-t')
# element = driver.find_element_by_tag_name('input') # 标签名
# element = driver.find_element_by_link_text('登录') # 就是标签中直接写的汉字
# element = driver.find_element_by_partial_link_text('新闻')
# link_text 是超链接载体的精确匹配,而partial_link_text是对超链接载体的模糊匹配
# 获取标签的属性
# print(element.get_attribute(''))
print(elements) # WebElement对象
# 5.关闭浏览器
driver.quit()
二、xpath定位
-
xpath怎么定位的?:主要为元素在XML/HTML中的相对(绝对)路径定位
-
xpath的几种定位策略:
1. 路径-定位 绝对路径/相对路径 2. 利用元素属性-定位 3. 层级与属性结合-定位 4. 属性与逻辑结合-定位
-
语法格式
-
demo演示
from selenium import webdriver # 1.初始化driver driver =webdriver.Chrome('./chromedriver') # 2.向百度发送请求 driver.get('http://www.baidu.com') # 3.定位 # 3.1定位地图标签 elment1 = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/a[3]') # 3.2定位新闻标签 elment2 = driver.find_element_by_xpath('//*[@id="s-top-left"]/a[1]') # 3.3定位输入框 elment3 = driver.find_element_by_xpath('//input[@name="wd"]') # 3.4定位输入框 elment4 = driver.find_element_by_xpath('//input[@name="wd" and @id="kw"]') # 3.5定位设为首页标签 elment5 = driver.find_element_by_xpath('//a[@link_text="设为首页"] | //a[@class="c-color-gray2"]') # 3.6定位设为首页标签 elment6 = driver.find_element_by_xpath('//*[text()="设为首页"]') # 4.获取定位元素的属性 print(elment6.get_attribute('href')) print(elment6) # 5.退出浏览器 driver.quit()
三、css定位
在selenium中极力推荐CSS定位,因为它比XPath定位速度要快!!!
-
xpath怎么定位的?:HTML中的各种标签的元素的花里胡哨的样式都是通过CSS装饰实现的,所以我们也可以通过元素的CSS格式来定位元素
-
css定位的几种常用策略:
1. id选择器 2. 类选择器 3. 元素选择器 4. 属性选择器 5. 层级选择器(后代选择器)
-
css基本语法
-
demo演示
from selenium import webdriver driver = webdriver.Chrome('./chromedriver'