UI
1.UI⾃动化测试概念:我们先明确什么是UI
UI,即(User Interface简称UI⽤户界⾯)是系统和⽤户之间进⾏交互和信息交换的媒介 UI⾃动化测试:
Web⾃动化测试和移动⾃动化测试都属于UI⾃动化测试,UI⾃动化测试就是借助⾃动化⼯具对程序UI层进⾏⾃动化的测试
2.为什么对UI采⽤⾃动化测试?
从不同的阶段或层次来说,⾃动化测试可以分为单元测试、接⼝测试、UI测试。如果⼀个产品从没有做单元测试或接⼝测试,只做u房的⾃动化测试是不科学的,很难从本质保证产品的质量
如果妄图实现全⾯的UI层的⾃动化测试更是劳民伤财,投⼊了⼤量⼈⼒时间结果却不尽⼈意,因为越往上层,⽤例维护成本越⾼,尤其是UI层的元素经常改变的产品。但不管什么样的产品,最终呈现给⽤户的是UI层测试⼈员必须在UI层投⼊⼤量的精九。所以。我们有必要通过⾃动化的⽅式帮助我们\"部分\"重复的劳动,在劳动⼒和维护成本之间找到⼀个平衡,⾃动化测试就会成为我们的⼀个利器。
3.什么项⽬适合做UI⾃动化测试?
1项⽬周期:⾸先是项⽬周期较长的产品,⼀般在⼀年半以上的产品
2.项⽬需求变动不频繁:如果项⽬需求变动频繁,在做⾃动化时会导致⼤量的脚本需要不断的迭代维护,就失去了uI⾃动化劳动⼒的⽬的3项⽬需要回归测试:项⽬需要回归测试,当测试⼀遍后,再次回归是可以直接通过⾃动化脚本进⾏回测
4.UI⾃动化测试介⼊时机
项⽬需要在功能测试完毕后
5.UI⾃动化测试所属分类
1.⿊盒测试(功能测试)2.⽩盒测试(单元测试)3.灰盒测试(接⼝测试)
注意:UI⾃动化测试属于⿊盒测试(功能测试)
Web⾃动化测试框架介绍
主流的web⾃动化测试⼯具1.QTP
QTP是⼀个商业化的功能测试⼯具,收费,⽀持web,桌⾯⾃动化测试。2.Selenium(本阶段学习)
Selenium是⼀个开源的web⾃动化测试⼯具,免费,主要做功能测试。3.Robot framework
RobotFramework是⼀个基于Python可扩展地关键字驱动的测试⾃动化框架。(RF框架)
2.Selenium框架介绍及特点:
介绍:
Selenium是⼀个⽤于web应⽤程序的⾃动化测试⼯具 特点:
1,开源软件:源代码开放可以根据需要来增加⼯具的某些功能2.跨平台:1inux.windows.mac
3.⽀持多种浏览器:FirefoxChrome、IE、EdgeOperaSafari等4.⽀持多种语⾔:PythonJavaC #JavaSeript.Ruby、PHP等
5.成熟稳定:⽬前已经被qooqle、百度、腾讯等公司⼴泛使⽤
6.功能强⼤:能够实现类似商业⼯具的⼤部分功能,因为开源性,可实现定制化功能
Web⾃动化测试环境搭建
1.⾃动化测试环境搭建三要素:
1.python环境
2.selenium框架:pip install selenium
3.Chromedriver驱动:下载地址,注意版本的⾼度吻合.4.Chrome浏览器
2.#selenium安装与Chromedriver#下载安装selenium:pip install selenium #chromedriver下载匹配:
下载地址:https://npm.taobao.org/mirrors/chromedriver/
版本匹配:浏览器与驱动的版本需要对应,版本号的前三段需要严格对应,但最后⼀段可能找不到完全对应的版本号但需要尽量缩⼩差距范围,查看浏览器版本:Chrome右上⾓三个点->帮助-->关于Google Chrome
#3.配置成功验证
#将驱动放置在⼀个⽂件夹中,使⽤pyeharm打开⽂件央,配置好虚拟环境(python解释器),#新建⼀个test的py⽂件#编写如下代码:
from selenium import webdriver
browserw webdriver.Chrome(./chromedriver) #mac代码
browser webdriver.chrome('./chromedriver.exe' ) #Windows代码browser.get\"https://www.baidu.com/)
#注意:
#如果不想每次都写./chromedriver,可以将chromedriver放到python的Seripts⾥
当你右键run⼀下test⽂件浏览器⾃动打开并在浏览器中打开了百度⾸页,就算配置成功 python
2.元素定位(⼀)
在使⽤Selenium进⾏⾃动化测试的过程中经常需要定位到UI界⾯中的指定元素进⾏操作,⽐如点击搜索按钮,⽐如像输⼊椎中输⼊内容等等在Selenium中经常使⽤⼀下8⼤定位⽅法:
Selenium的8定位元素⽅法:
1id:根据DOM节点的id属性进⾏定位
name:根据DOM节点的name属性进⾏定位
class name:根据DOM节点的class属性进⾏定位tagname:根据DOM节点的标签名进⾏定位 linktext;根据超链接的⽂本定位
partial link text:根据超链接的部分⽂本定位xPath:根据xpath定位
dss:根据css选择器定位说明:
Selenium框架定位元素的⽅法⼤致可以分为三类,⼀类是根据元素⾃⾝属性与特点定位(前6个)。第⼆类是根据xpath这种HTML解析模块实现的,第三类是根据css选择器定位,起始css选择器同样是HTML解析器
from selenium import webdriverimport time
bowser = webdriver.Chrome('chromedriver.exe')
bowser.get('file:///F:/jiango/zidonghua/pagetest/%E6%B3%A8%E5%86%8CA.html')
time.sleep(3)#根据id
# bowser.find_element_by_id('userA').send_keys('2597349742')# time.sleep(3)
#根据class属性
# bowser.find_element_by_class_name('telA').send_keys('17535827976')# time.sleep(3)
#根据name
# bowser.find_element_by_name('emailA').send_keys('123@qq.com')# time.sleep(3)
#根据标签
# bowser.find_element_by_tag_name('input').send_keys('hellow')# time.sleep(3)
#根据超链接部分⽂本
# bowser.find_element_by_partial_link_text('⽹站').click()# time.sleep(3)#根据超链接⽂本
# bowser.find_element_by_link_text(\"新浪\").click()# time.sleep(3)bowser.quit()
idclassname,tagname定位
Selenium是以浏览器对象(browser ordriver)为基础进⾏定位的,定位的⽅法
为:browser.find element by xxx,其中到底根据啥进⾏定位,是根据xxx来决定的,⽐如 browser.find element byid节点id属性值)则是根据DOM节点的id进⾏定位的。1.id:根据DOM节点的id属性进⾏定位browser.find element by idid属性值
2.class name:根据DOR节点的class属性进⾏定位
browser.find element by class name\"class属性值之⼀*)注意:如果节点class属性有多个值,只需要写其中⼀个即可定位到该节点3 .name 相氓DOM节点的name属性讲⾏定位 browser.find element by name(\"name属性值'python
4.tag name:根据DOM节点的标签名进⾏定位browser.find element by tag name(div\")
link text与partail link text定位
link text;根据超链接的⽂本定位
browser.find element by link text('新闻)
partiallink text:根据超链接的部分⽂本定位 browser.find element by link text新)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ryyc.cn 版权所有 湘ICP备2023022495号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务