本文重点:
selenium特点、webdriver工作原理、脚本录制和一些简单api的使用
什么是自动化测试?
自动化测试是指软件测试的自动化,在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。
自动化测试工具有哪些?
QTP
- selenium
- jmeter(性能测试工具,主要测试接口,可以自己设置,也可以录制脚本,也可以进行接口测试)
- Loadrunner (性能测试工具,UI界面录制)
- soupUI(接口测试工具,postman也可以进行接口测试)
- appium(APP自动化测试工具)
- macaca 阿里巴巴开发的
自动化测试金字塔(自上而下):
UI自动化 页面用例维护量比较大,适合界面稳定的时候做自动化测试
接口自动化 适合接口稳定的项目,和UI界面比效率比较高,用例维护量适中
单元测试 使用java语言中Junit去做
越往上,效率越低,测试用例维护越来越麻烦
自动化适用于什么测试?
兼容性测试、回归测试(脚本重复利用率越高,自动化的价值越大)
如何实施自动化测试:先分析,然后编写测试用例,实现脚本,执行脚本,进行对脚本维护
selenium有哪些特点?
- 轻量级,安装起来非常方便
- 支持多语言,ruby,Python,java,C#等,受用人群就更加广泛
- 支持多平台,Windows,Mac,Linux
- 支持多浏览器,Firefox,IE,Chrome,edge,Safari,Opera
- 支持分布式测试,自动化测试脚本太多时,可以把测试用例分布到不同的测试机器上执行,实现测试的快速实施
- 而且还是免费的
自动化测试selenium是一个工具集。
selenium 1.0 包括 selenium RC、selenium IDE、selenium GRID 存在环境沙箱问题
selenium 2.0 是selenium 1.0 + webdriver,解决了环境沙箱问题
selenium 3.0 增加了一些新特性,增加了edge、Safari的原生内核
webdriver工作原理:
webdriver 浏览器的驱动,控制浏览器
乘客向出租车司机说明去哪里,出租车司机相当于webdriver,驱动汽车去那,乘客相当于脚本。
selenium IDE 录制脚本,打开IDE,新建一个项目,然后REC录制脚本,输入URL,可以回放录制的脚本,也可以选择语言导出。
简单API的使用
如何写一个简单脚本?
#要想使用selenium 的webdriver 里的函数,首先把包导进来
from selenium import webdriver
#导入time
import time
#需要操控的浏览器,首字母必须大写
driver = webdriver.Chrome()
#打开网页-百度的的网址
driver.get("https://www.baidu.com")
time.sleep(8)
#关掉软件
driver.close()
#关掉软件,并清除浏览器的一些缓存
driver.quit()
不管是用哪种方法,定位时,元素必须是唯一的,才可以定位到。
定位元素的方式有哪些?
- id
- name
- class name
- link text 链接
- partial link text 部分链接内容
- tag name
- xpath
先定位到那个元素,右击检查,找到那个元素,右击copy xpath找到这个元素
- css selector
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
#不管是用哪种方法,定位时,元素必须是唯一的,才可以定位到
#id
# driver.find_element_by_id("kw").send_keys("赵丽颖")
# driver.find_element_by_id("su").click()
#name
# driver.find_element_by_name("wd").send_keys("王一博")
# driver.find_element_by_id("su").click()
#class name
# driver.find_element_by_class_name("s_ipt").send_keys("迪丽热巴")
# driver.find_element_by_id("su").click()
#link text 链接内容
# driver.find_elements_by_link_text("新闻").click()
#partial link text 部分链接内容
# 用hao来定位hao123
# driver.find_elements_by_partial_link_text("hao").click()
#tag name 不能定位到,input太多了,不唯一
#页面上多个元素的标签都是input,所以这个无法运行
# driver.find_element_by_tag_name("input").send_keys("易烊千玺")
# driver.find_element_by_tag_name("input").click()
#xpath
#从这个脚本的头(head),一直到脚本的位置,这个元素的的路径
#先定位到那个元素,右击检查,找到那个元素,右击copy xpath找到这个元素
# driver.find_element_by_xpath("//*[@id='kw']").send_keys("100周年")
# driver.find_element_by_xpath("//*[@id='su']").click()
#css selector
driver.find_element_by_css_selector("#kw").send_keys("叛逆者")
driver.find_element_by_css_selector("#su").click()
time.sleep