当前位置: 首页 > news >正文

UI自动化概念+Web自动化测试框架

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 selenium3.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 webdriverbrowserw 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属性进行定位<br>tagname:根据DOM节点的标签名进行定位 <br>linktext;根据超链接的文本定位partial link text:根据超链接的部分文本定位<br>xPath:根据xpath定位<br>dss:根据css选择器定位说明:Selenium框架定位元素的方法大致可以分为三类,一类是根据元素自身属性与特点定位(前6个)。第二类是根据xpath这种HTML解析模块实现的,第三类是根据css选择器定位,起始css选择器同样是HTML解析器
from selenium import webdriverimport timebowser = 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)<br>#根据class属性# bowser.find_element_by_class_name('telA').send_keys('17535827976')# time.sleep(3)<br>#根据name# bowser.find_element_by_name('emailA').send_keys('123@qq.com')# time.sleep(3)<br>#根据标签# 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属性值'python4.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新)
总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  文档获取方式:

加入我的软件测试交流群:632880530免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

相关文章:

  • SpringCloud Gateway 网关的请求体body的读取和修改
  • SpringCloud Alibaba Demo(Nacos,OpenFeign,Gatway,Sentinel)
  • 下载的nginx证书转换成tomcat证书格式
  • 基于架构的软件开发方法
  • 访问后端接口报错:net::ERR_CONNECTION_RESET
  • SpringCloud(六) Nacos配置管理
  • 延时摄影视频制作工具 LRTimelapse mac中文版特点介绍
  • python 实时读取文件数据生成折线图——Matplotlib
  • Spring Boot 使用断言抛出自定义异常,优化异常处理机制
  • okhttp post请求 header post参数加密遇到的两个问题
  • 怎么让重要文件自动备份到OneDrive?
  • 【QT】基本的绘图操作和高级绘图
  • 算法:查找数组中第K大的元素
  • ONNX的结构与转换
  • 数仓建模—数仓建设概论
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【剑指offer】让抽象问题具体化
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 08.Android之View事件问题
  • 0基础学习移动端适配
  • Android Studio:GIT提交项目到远程仓库
  • Docker 笔记(2):Dockerfile
  • fetch 从初识到应用
  • Koa2 之文件上传下载
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Markdown 语法简单说明
  • PHP 的 SAPI 是个什么东西
  • React 快速上手 - 07 前端路由 react-router
  • 从零开始学习部署
  • 聚类分析——Kmeans
  • 聊聊flink的BlobWriter
  • 驱动程序原理
  • 深入浅出webpack学习(1)--核心概念
  • 用mpvue开发微信小程序
  • 原生js练习题---第五课
  • ​人工智能书单(数学基础篇)
  • # .NET Framework中使用命名管道进行进程间通信
  • ###C语言程序设计-----C语言学习(3)#
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $$$$GB2312-80区位编码表$$$$
  • (Matlab)使用竞争神经网络实现数据聚类
  • (pojstep1.3.1)1017(构造法模拟)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (算法)Game
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)可以带来幸福的一本书
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**