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

news2024/11/15 3:56:41

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

2

3

4

5

6
1.自动化测试环境搭建三要素:



1.python环境

2.selenium框架:pip install selenium

3.Chromedriver驱动:下载地址,注意版本的高度吻合.

4.Chrome浏览器

1

2

3

4

5

6
2.#selenium安装与Chromedriver

#下载安装selenium:

pip install selenium

#chromedriver下载匹配:

下载地址:https://npm.taobao.org/mirrors/chromedriver/

版本匹配:浏览器与驱动的版本需要对应,版本号的前三段需要严格对应,但最后一段可能找不到完全对应的版本号但需要尽量缩小差距范围,查看浏览器版本:Chrome右上角三个点->帮助-->关于Google Chrome

1

2

3

4

5

6

7

8

9

10

11

12

13
#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.元素定位(一)

1

2

3

4

5

6

7

8
在使用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解析器
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32
from selenium import webdriver

import 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)

<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定位

1

2

3

4

5

6

7

8

9

10

11

12

13
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定位

1

2

3

4
link text;根据超链接的文本定位

browser.find element by link text('新闻)



partiallink text:根据超链接的部分文本定位 browser.find element by link text新)

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1143849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分享】RAR压缩包的密码可以取消吗?

在日常工作中&#xff0c;我们可能经常用到RAR文件&#xff0c;RAR作为一种常见的压缩文件格式&#xff0c;可以将一个或多个文件压缩成单个文件&#xff0c;方便传输和保存。 RAR文件还可以设置“打开密码”&#xff0c;这样只有输入正确的密码才能打开压缩包里面的文件&…

SpringBoot 快速实现 api 加密

在项目中&#xff0c;为了保证数据的安全&#xff0c;我们常常会对传递的数据进行加密。常用的加密算法包括对称加密&#xff08;AES&#xff09;和非对称加密&#xff08;RSA&#xff09;&#xff0c;博主选取码云上最简单的API加密项目进行下面的讲解。 下面请出我们的最亮的…

5 个编写高效 Makefile 文件的最佳实践

在软件开发过程中&#xff0c;Makefile是一个非常重要的工具&#xff0c;它可以帮助我们自动化构建、编译、测试和部署。然而&#xff0c;编写高效的Makefile文件并不是一件容易的事情。在本文中&#xff0c;我们将讨论如何编写高效的Makefile文件&#xff0c;以提高我们的开发…

【Bug——VMware Workstation】虚拟机桥接网络没有 VMnet0

此时 没有VMnet0用来桥接网络。 接下来进行解决 1.找到安装VM的路径&#xff0c;在安装的目录里面找到如图所示的三个文件&#xff1a; 2.依次点击鼠标右键 将这三个文件依次安装如图所示&#xff1a; 二.windows下的操作 1.首先 找到电脑的控制面板->网络和internet->…

二维码智慧门牌管理系统升级解决方案:采集计划精细化管理的艺术

文章目录 前言一、采集计划的定义和配置流程二、多采集计划配置策略三、采集计划的实践应用 前言 在数字化时代&#xff0c;建设智慧城市需要借助各种先进的技术工具。其中&#xff0c;二维码智慧门牌管理系统在城市管理、资源调配和公众服务等方面扮演着举足轻重的角色。关键…

不容错过的Spring框架解析,掌握开发中的关键技术

Spring 原理 它是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 Spring 特点 轻量级 控制反转 面向切面 容器 框架集合 Spring特征 Spring 核心组件 Spring 常用模块 Spring 主要包 Spring …

Self-Supervised MultiModal Versatile Networks

方法 视觉-音频空间S v a _{va} va​&#xff0c;嵌入z v , v a t _{v,vat} v,vat​ 体会 一篇文章只有一张图&#xff0c;笑死人。作者且未回复问题

体育竞技分析

体育竞技分析是一项重要的工作&#xff0c;它通过对运动员的数据进行收集、处理和分析&#xff0c;可以帮助教练和球队做出更明智的决策。Python作为一种强大的编程语言&#xff0c;提供了丰富的库和工具&#xff0c;可以用于体育竞技数据的分析和可视化。本文将介绍如何使用Py…

二、BurpSuite Decoder解码器

一、编码解码 解释&#xff1a;BurpSuite 可以用这个模块来轻松进行编码解码&#xff0c;下面是支持的类型 URL HTML Base64 ASCIIhex Hex Octal Binary Gzip 注意&#xff1a;特别注意的是URL编码&#xff0c;一般的在线网站都无法对比如‘abc’的文本编码&#xff0c;burps…

【0基础学Java第二课】数据类型与变量

2. 数据类型与变量 2.1 字面常量2.2 数据类型2.3 变量2.3.1 变量概念2.3.2 语法格式 2.4 整型变量2.4.1 整型变量2.4.2 长整型变量2.4.3 短整型变量2.4.4 字节型变量 2.5 浮点型变量2.6 字符型2.7 布尔型变量2.8 类型转换2.9 类型提升2.10 字符串类型2.10.1 字符串拼接操作符 2…

linux中nginx配置https

一、版本适配 版本一定要适配&#xff0c;否则会报错各种参数定位不到不识别的错误&#xff0c;以下是版本适配信息&#xff0c;各位观客自行按照以下信息匹配版本。 Nginx 1.11.5及以上版本与OpenSSL 1.0.2及以上版本兼容。Nginx 1.15.2及以上版本与OpenSSL 1.1.1及以上版本兼…

足底筋膜炎多久能好

足底筋膜炎4-6周左右能好。 足底筋膜炎一般经过系统治疗后&#xff0c;如外敷‘古顺敷堂’筋膜贴在3-5天的时间水肿明显的减轻&#xff0c;度过水肿期之后&#xff0c;疼痛的症状能够得到明显的缓解&#xff0c;但是如果进行下床活动以及剧烈的运动、受凉&#xff0c;还可能会…

虚拟技术和容器技术的对比

1.概念 容器技术是一种内核轻量级的操作系统层虚拟化技术&#xff0c;能隔离进程和资源。 虚拟机&#xff08;VM&#xff09;技术是一种创建于物理硬件系统&#xff0c;充当虚拟计算机系统的虚拟环境&#xff0c;该虚拟机可以独 立运行在一个完全隔离的环境中&#xff0c;向本…

CrossOver软件2023官方破解版本下载

CrossOver软件的核心是Wine&#xff0c;它为用户提供了一个友好的图形界面&#xff0c;而且持续对受支持的Windows应用程序进行测试&#xff0c;从而使用户可以专注于应用程序的使用上&#xff0c;不必为安装使用Windows应用程序花费大量的时间去配置Wine、去调试应用软件的兼容…

Modality to Modality Translation

模型架构 信息向量记为V 作者未提供可直接运行的代码

JVM面试知识点整理

文章目录 (一) JVM组成JVM组成部分和运行流程从图中可以看出 JVM 的主要组成部分运行流程&#xff1a;程序计数器Java堆虚拟机栈方法区堆栈的区别是什么&#xff1f; (二) 类加载器双亲委派模型类装载的执行过程 (三) 垃圾回收对象什么时候可以被垃圾回收哪些可以作为根对象 垃…

【luckfox】添加压力传感器hx711

文章目录 前言一、参考资料二、电路图三、驱动四、makefile——添加驱动五、dts——使能gpio5.1 参考5.2 改动1—— hx117节点5.3 改动2——引脚节点5.4 已经被定义的引脚5.5 gpio源码 六、改动总结——使能hx711七、验证驱动添加八、编写测试文件8.1 测试代码8.2 配置编译环境…

设计模式——单例模式详解

目录 设计模式类型单例模式单例模式方式饿汉式静态常量方式静态代码块形式 懒汉式线程不安全&#xff08;不推荐&#xff09;懒汉式优化&#xff08;不推荐&#xff09; 双重检查&#xff08;推荐方式&#xff09;静态内部类&#xff08;推荐方式&#xff09;枚举方式&#xff…

LeetCode 1465. 切割后面积最大的蛋糕【贪心,数组,排序】1444

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

探秘Kafka背后的幕后机关,揭示消息不丢失或重复的原理与实践经验

背景 相信大家在工作中都用过消息队列&#xff0c;特别是 Kafka 使用得更是普遍&#xff0c;业务工程师在使用 Kafka 的时候除了担忧 kafka 服务端宕机外&#xff0c;其实最怕如下这样两件事。 消息丢失。下游系统没收到上游系统发送的消息&#xff0c;造成系统间数据不一致。…