""""""
""" 自动化测试:
其他行业是将人的手工作业转换为机器操作的过程叫做自动化
软件行业:认为手动测试转换为代码执行的过程叫做自动化测试
自动化测试的好处:
减少人力成本的开支,提升项目的工作效率。
自动化测试需要具备开展的条件:
1.需求稳定,不会出现频繁的需求变更
2.项目有充足的时间开展自动化测试。
3.项目维护周期长
4.需要测试人员具备一定的代码能力
5.有频繁的回归测试.--->自动化代码一般用于回归测试
回归测试:针对bug修复完成之后进行回归。
发布了一个新功能,针对之前已经稳定的功能进行回归测试,看新的功能
是否有影响之前的功能
一般满足三个条件就可以开展,满足1 3 4 条件就具备开展自动化测试
的条件
一般在什么阶段开始输出自动化测试脚本?
1.一般是在验收测试通过之后,产品上线之后,针对cass进行转化为自动化用例
自动化用例也是通过你的功能测试用例转换的,并不会将你所有的功能测试用例
都进行转换,因为ui自动化没有异常场景,只做正常场景。
自动化cass的执行:
1.一般在回归测试阶段进行执行
2.定时脚本任务运行
自动化测试用例的覆盖程度?
1.公司有专业的自动化团队
业务场景覆盖:80% - 90%
2.公司没有专业的自动化团队
业务场景覆盖度:30% 左右,业务平台主体功能案例覆盖
自动化测试的
1.QTP :是一款商业化的自动化测试工具,提供了强大的脚本录制功能,
支持b/s 和c/s两种架构的自动化测试项目
2.robot framework :简称rf,一款由python编写的自动化工具,
具备良好的拓展性,能够支持python自定义关键字(函数)驱动,
支持ui自动化,api自动化
3.selenium:他是一款基于web应用程序的自动化测试工具,他是由
JavaScript语言编写的,他支持多平台,多语言,多浏览器去实现自动化承德市
selenium是一款免费开源的工具
多平台:Windows,mac,linux,unix
多语言:JavaScript,Java,C,Python
多浏览器:Chrome,火狐,ie
自动化测试的流程:
1.产品验收通过,项目上线之后,去筛选需求,挑选出需要转换
为自动化测试的场景案例
2.针对筛选出来的业务场景组织评审。评审通过的业务场景进行
实施
3.针对当前的测试工具进行选择,搭建自动化测试的框架
结构。
4.编写用例的cass。
5.执行自动化案例,输出生成测试报告。设定定时任务,进行执行分析自动化测试
结果
6.做自动化项目代码的维护以及后续的案例转换。
1.安装第三方的工具库:selenium 3.14.1 版本
2.安装浏览器驱动
打开浏览器:查看当前自己浏览器的版本,url栏输入chrome:version
http://chromedriver.storage.googleapis.com/index.html
打开下载驱动网址,找到当前浏览器版本一致或相近的驱动进行下载
3.将解压完成后的chromedriver.exe 此程序放在你的python安装路径下来的
Scripts目录下面
"""
# from selenium import webdriver
#
# driver = webdriver.Chrome() # 创建一个谷歌浏览器驱动对象。
# driver.get("https://www.baidu.com") # 通过get打开浏览器
# driver.maximize_window() # 窗口最大化
"""ui自动化元素的定位方法:
id定位:
通过页面功能标签里面的id元素实现功能定位操作
find_element_by_id()
"""
# driver.find_element_by_id("kw").send_keys("ui自动化测试")
# driver.find_element_by_id("su")
"""
class 元素定位:
find_element_by_class_name()
"""
# driver.find_element_by_class_name("s_ipt").send_keys("ui自动化")
"""
name元素定位:
fin_element_bay_name()
"""
# driver.find_element_by_name("wd").send_keys("武汉多测师")
"""
text 文本值定位内容
find_link_text
"""
# driver.find_element_by_link_text("hao123").click()
"""
partial_link_text:模糊文本定位
find_element_by_partial_link_text
"""
# driver.find_element_by_partial_link_text("123").click()
"""
tag_name:通过获取页面的标签进行元素的定位。
element:查找页面单个元素只存在单个标签的时候定位,如果我有多个相同的
标签或者元素,默认第一个元素标签定位
elements:获取页面上面所有的标签元素
get_attribute():获取标签当中的元素
"""
# driver.find_element_by_id()
# all = driver.find_elements_by_tag_name("input")
# for i in all:
# if i.get_attribute("id") == "kw":
# i.send_keys("ok,定位到了")
"""
xpath:路径定位:标签的层级路径
绝对路径:找到对应的元素:右键copy--> copy full xpath
相对路径:找到对应的元素:右键copy--> copy xpath
find_element_by_xpath
"""
# 绝对路径
# driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input").send_keys("上海多测师")
# 相对路径
# driver.find_element_by_xpath('//*[@id="kw"]').send_keys("武汉黄鹤楼")
# 自己写一个相对路径:
# driver.find_element_by_xpath("//*[@id='kw']").send_keys("海洋极地")
# 自己写一个相对路径组合
# driver.find_element_by_xpath("//*[@id='kw' and @class = 's_ipt']").send_keys("海洋极地")
# driver.get("https://www.4399.com")
# driver.find_element_by_name("k").send_keys("造梦西游")
# driver.find_element_by_link_text('搜索').click()
""" 找上级定位
"""
# driver.find_element_by_xpath("//*[@id='from]/span[1]/input[1]").send_keys("王八蛋")
"""css 定位方法 :
find_element_by_css_selector()
支持路径定位
支持找父级定位
id选择器定位,class选择器 选择器定位
支持id定位 class定位等等
组合定位
"""
# driver.find_element_by_css_selector("#kw").send_keys("哈哈哈")
# driver.find_element_by_css_selector(".s_ipt").send_keys("你好武汉")
# 元素定位方法 maxlength=255 name="wd" autocomplete="off"
# driver.find_element_by_css_selector("[maxlength='255']").send_keys("你好武汉")
# driver.find_element_by_css_selector('[name="wd"]').send_keys("世界杯")
# driver.find_element_by_css_selector('[autocomplete="off"]').send_keys("国足")
# 路径定位
# driver.find_element_by_css_selector("span>input").send_keys("世界杯")
# driver.find_element_by_css_selector('#su').click()
"""
定位方法优先级:
有id class 值优先id,class
"""
# id="s-usersetting-top" class="set" class="c-icon s-skin-close"
# driver.find_element_by_css_selector("#s-usersetting-top").click()
# driver.find_element_by_css_selector(".set").click()
# driver.find_element_by_xp("class='c-icon s-skin-close'").click()
"""针对鼠标悬浮操作的处理:
ActionChains(driver):用于操作鼠标的类
move_to_element:鼠标移动到某一个元素上
perform:执行所有操作
"""
#
# from selenium import webdriver
# from selenium.webdriver.common.action_chains import ActionChains
# from time import sleep
#
# driver = webdriver.Chrome() # 创建一个谷歌浏览器驱动对象。
# driver.get("https://www.baidu.com")
# driver.maximize_window()
#
# element_sz = driver.find_element_by_id('s-usersetting-top')
# ActionChains(driver).move_to_element(element_sz).perform()
# driver.find_element_by_css_selector("#s-usersetting-top").click()
# sleep(2)
# driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[2]/span').click()
# sleep(2)
# driver.find_element_by_xpath('//*[@id="wrapper"]/div[6]/span/i').click()
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('https://lol.qq.com/main.shtml')
# driver.maximize_window()
#
# driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[1]/div[2]/p[1]/a').click()
# sleep(1)
# login_qq_iframe = driver.find_element_by_xpath('//*[@id="loginIframe"]')
# driver.switch_to.frame(login_qq_iframe)
# driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
# sleep(1)
# driver.find_element_by_xpath('//*[@id="u"]').send_keys('1792877590')
# sleep(1)
# driver.find_element_by_xpath('//*[@id="p"]').send_keys('sq1792877590')
# sleep(1)
# driver.find_element_by_xpath('//*[@id="login_button"]').click()
# sleep(1)
# driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[1]/div[4]/div[1]/input').send_keys('564891')
# sleep(1)
# driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[1]/div[5]/button/div').click()
# driver.find_element_by_xpath('//*[@id="img_out_1792877590"]').click()
#
# driver.switch_to.default_content()
"""
处理alert的弹窗
"""
# from selenium import webdriver
# driver = webdriver.Chrome()
# driver.get("file:///C:/Users/Administrator/Documents/tencent%20files/1792877590/filerecv/alert.html")
#
# driver.find_element_by_xpath('/html/body/button').click()
#
# # driver.switch_to.alert.accept()
# driver.switch_to.alert.dismiss()
"""
滚动条的操作:
js的方法进行处理滚动条
"""
# import time
# from selenium import webdriver
# driver = webdriver.Chrome()
# driver.get('https://www.jd.com/')
# driver.maximize_window()
# time.sleep(1)
# js = "window.scrollTo(0,20000)"
# driver.execute_script(js)
# time.sleep(2)
# 点击拍卖
# driver.find_element_by_xpath('//*[@id="navitems-group3"]/li[1]/a').click()
# 获取窗口的句柄:
# all_handle = driver.window_handles
# print(all_handle)
"""
['CDwindow-EEF2E9F3CECC62C7E35FDF9157F94C88',
'CDwindow-5D645532EEB712A2148531D161AF0618']"""
# 窗口切换
# driver.switch_to.window(all_handle[1])
# time.sleep(1)
#
# # 获取当前位置所在的句柄窗口
# handle = driver.current_window_handle
# print(handle)
# """CDwindow-EEF2E9F3CECC62C7E35FDF9157F94C88
# """
# driver.find_element_by_xpath('//*[@id="extra-sifa"]/a').click()
# from selenium.webdriver.support.select import Select
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('https://www.xmrc.com.cn/')
# driver.maximize_window()
# sleep(2)
#
# select_element = driver.find_element_by_xpath('//*[@id="jobtype"]')
# 通过select 类当中selec_by_value进行下拉框内容的选择,通过
# select 标签内容的value进行定位,内容定位
# Select(select_element).select_by_value('9971')
# 通过Select类当中的select_by_index(3)进行定位,索引定位
# Select(select_element).select_by_index(3)
# select_by_visible_text通过text文本进行定位
# Select(select_element).select_by_visible_text("技工类")
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.jd.com/')
driver.maximize_window()
time.sleep(1)
# 点击拍卖
driver.find_element_by_xpath('//*[@id="navitems-group3"]/li[1]/a').click()
# 获取窗口的句柄:
all_handle = driver.window_handles
print(all_handle)
# 窗口切换
# driver.switch_to.window(all_handle[1])
# time.sleep(1)
# close:关闭当前的窗口
# driver.close()
# quirt: 关闭所有窗口
# driver.quit()
|
|