武汉12期-高珍 发表于 2022-3-29 21:10:06

3.29 ui自动化

ui自动化
什么是自动化测试?
      硬件行业:把人为的手工测试转换为机器实现的过程叫做自动化测试。
      软件行业:把人为的手工测试转换为代码实现的过程叫做自动化测试。


做自动化需要满足那些要求?
    1.需求 稳定,不会有频繁的需求变更;
   2.项目周期长,有充足的时间开展自动化;
    3.自动化测试用于回归测试,有频繁的回归测试活动;
    4.需要测试人员具备一定的代码能力。
满足这些要求就可以开展自动化测试。

自动化用例脚本:
      是使用功能测试例进行转换为自动化测试用例:
               ui自动化是不写异常场景的

你项目总共多少条脚本数,你写过多少条ui自动化的用例脚本----
功能测试用例一年在(一万条左右---包含正常和异常场景用例,
   正功能测试2000-3000条,在从这个正常的基础筛选你需要做自
   动化测试的用例)
    1.当前的项目有专业的自动化团队---80%-90%
    2.当前项目没有专业的自动化团队---30%

自动化脚本在哪个阶段编写?
   1.自动化测试用例,在功能测试通过,以及产品验收通过之后进行开始。
自动化脚本在哪个阶段执行?
    2.在回归测试阶段。
自动化的常见测试工具?
QTP:它是一款商业化的自动化测试工具,它提供了录制和回放功能,它支持
         b/s,c/s架构产品。
robot framework : 他是一款 由python编写的自动化框架工具,也支持python语
      言,可以使用python当中的函数方法,提供了各种客服端的接口,能够支
      持各种客服端进行使用。
selennium:他是一款基于web应用的自动化测试第三方工具包,它支持多台,
          多语言,多浏览器的方式去实现自动化测试。
多平台:linux   mac   windows
多语言:javac++jspython
多浏览器:谷歌    火狐   ie

开展自动化测试的流程:
   1、熟悉我们当前的项目需求,筛选出需要做自动化测试场景。
   2、筛选出来,进行组织评审。
   3、要根据业务流程去选择自动化用例测试的场景,以及找出当前有业务流程
            自动化测试用例。
    4、选择自动化测试的工具。
               1)选取主流的自动化测试工具
    5、设计自动化测试框架,进行搭建。
               1)用例管理
               2)用例的维护
            3)用例的执行
            4)生成自动化测试报告
            5)发送自动化测试报告邮件
6、编写自动化测试脚本输出结果
7、执行和维护

from selenium import webdriver
driver=webdriver.Chrome()    #实例化一个webdriver的实例化对象
                                              webdriver 他是一个类
get:打开一个浏览器的网址
driver.get("https://www.baidu.com")

第一种定位方法:id定位
id 定位方法,通过页面id元素进行页面的功能
send_keys 输入的方法(函数)
driver.find_element_by_id("kw").send_keys("hello wuhan")

第二种:class定位class属性值定位
driver.find_element_by_class_name("s-ipt").send_keys("黄鹤楼")
driver.find_element_by_class_name("s_ipt").send_keys("黄鹤楼")
第三种:name属性定位
driver.find_element_by_name("wd").send_keys("多测师")

第四种:text文本值定位   click点击的操作
driver.find_element_by_link_text("hao123").click()

第五种:模糊文本值定位 partial_link_text
driver.find_element_by_partial_link_text("hao123").click()

第六种:tag name 定位   
#element 只适合用于当前页面只有这样一个属性标签input、 kw、 s_ipt、
#elements   获取页面所有的页面标签获取所有input
a=driver.find_elements_by_tag_name("input")
print(a)
for i in a:
   if i.get_attribute("name")=="wd":
      i.send_keys("武汉多测师”)
#注释get_attribute    获取我当前标签的属性元素获取name属性

第七种:使用js定位
#var js语言定义变量的关键字
#getElementById("kw") 获取页面上kw的属性进行定位
#   value="duoceshi" value输入内容
#   execute_script(js):执行js语句的函数方法
js='var a=document.getElementById("kw").value="duoceshi"'
driver.execute_script(js)


第八种:路径定位xpath
#绝对路径定位
#   找到对应的元素,右键copy--->copyfull xpath 复制
driver.find_element_by_xpath("/html/body/div/div/div/div/div/form/span/input").send_keys("武汉每天不一样")

#相对路径    右键copy--->copy Xpath 复制
driver.find_element_by_xpath("//*[@class='s_ipt']").send_keys("武汉欢迎你”)
#       //*[@id="kw"]

#路径组合定位:当我的路径存在重复情况 可以使用组合路径的方法定位
driver.find_element_by_xpath("//*[@id='kw' and @autocomplete='off]").send_keys("啦啦啦啦")   

#路径找父级定位:根据父级的路径找到我的目标
driver.find_element_by_xpath("//*@id='from']/span/input".send_keys("巴拉巴拉")

第九种:css 定位
css定位通过id 选择器 定位
driver.find_element_by_css_selector("#kw").send_keys("祖国我爱你")

css 定位通过class 选择器定位
driver.find_element_by_css_selector(".s_ipt").send_keys("武汉我爱你")

css通过属性值定位
driver.find_element_by_css_selector(" ").send_keys("啦啦啦啦")
driver.find_element_by_css_selector(" ").send_keys("哈哈哈哈")

css组合定位   多个值的属性组合
driver.find_element_by_css_selector(" ").send_keys("呜呼啦呼黑魔变身")

上级路径定位
driver.find_element_by_css_selector("span>input ").send_keys("巴啦啦能量")

上上级路径定位
driver.find_element_by_css_selector("form>span>input ").send_keys("无卡拉卡小魔仙全身变")


隐藏下拉框定位:使用action_chains类当中的方法
定位百度页面设置的高级设置
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()#先获取到我想移动的位置
id_setting=driver.find_element_by_id("s-usersetting-top")
#调用ActionChains这个类,第一个穿driver对象。
#move_to_element:鼠标移到的位置(移动到我获取id_setting 元素上)
ActionChains(driver).move_to_element(id_setting).perform()
sleep(2)
#点击设置隐藏下拉框里面的内容,高级搜索。
driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a').click()


多个窗口如何进行切换
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("https:www.jd.com")
driver.maximize_window()
driver.find_element_by_xpath('//*[@id="navitems-group2"]/li/a').click()
driver.find_element_by_xpath('//*[@id="extra-zhenpin"]/a').click()


#多个窗口如何进行切换
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("https:www.jd.com")
driver.maximize_window()
#点击首页的拍卖按钮
driver.find_element_by_xpath('//*[@id="navitems-group2"]/li/a').click()
#获取页面的标识--->窗口的句柄--->通过句柄实现窗口的切换
all_hendle=driver.window_handles   #获取所有的句柄
print(all_hendle)    #打印所有的句柄
#切换以下句柄
driver.weithch_to.window(all_hendle)
#打印当前的句柄
#hendle=driver.current_window_hendle
#print(hendle)
#点击第二个窗口的珍品拍卖
driver.find_element_by_xpath('//*[@id="extra-zhenpin"]/a').click()

页: [1]
查看完整版本: 3.29 ui自动化