当前位置: 首页 > 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

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

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

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

相关文章:

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

1.UI自动化测试概念:我们先明确什么是UI UI&#xff0c;即(User Interface简称UI用户界面)是系统和用户之间进行交互和信息交换的媒介 UI自动化测试: Web自动化测试和移动自动化测试都属于UI自动化测试&#xff0c;UI自动化测试就是借助自动化工具对程序UI层进行自动化的测试 …...

在 macOS 上的多个 PHP 版本之间切换

文章目录 前言一、前提条件1.引入库需要安装 Xcode 2.安装多个PHP版本2.PHP版本切换 开源替代品 前言 不同项目使用php版本可能不同&#xff0c;需要安装不同版本php 一、前提条件 1.引入库 需要安装 Xcode 命令行工具和Homebrew xcode-select --install检查brew是否已安…...

地址解析协议ARP

地址解析协议&#xff08;Address Resolution Protocol&#xff0c;ARP&#xff09;&#xff0c;用于根据本网内目的主机或默认网关的IP地址获取其MAC地址。 ARP的基本思想&#xff1a;在每一台主机中设置专用内存区域&#xff0c;称为ARP高速缓存&#xff08;也称为ARP表&…...

Go学习第十三章——Gin入门与路由

Go web框架——Gin入门与路由 1 Gin框架介绍1.1 基础介绍1.2 安装Gin1.3 快速使用 2 路由2.1 基本路由GET请求POST请求 2.2 路由参数2.3 路由分组基本分组带中间件的分组 2.4 重定向 1 Gin框架介绍 github链接&#xff1a;https://github.com/gin-gonic/gin 中文文档&#xf…...

[减脂期食谱] 自制千岛酱

[减脂期食谱] 自制千岛酱 成品如下&#xff1a; 最中间的那个&#xff0c;算比较居中的颜色吧&#xff0c;其实自己家做原版的千岛酱还是比较简单的&#xff0c;它的底就是蛋黄酱(蛋黄油乳化的酱)&#xff0c;随后里面的材料比较自由&#xff0c;维基百科是这么介绍的&#xf…...

Android 系统架构

目录 Android 系统架构 1. Android 应用层 2. Android应用框架层 2.1 Activity Manager &#xff08;活动管理器&#xff09; 2.2 Window Manager &#xff08;窗口管理器&#xff09; 2.3 Content Provider (内容提供器) 2.4 View System&#xff08;视图系统&a…...

【Docker】Python Flask + Redis 练习

一、构建flask镜像 1.准备文件 创建app.py,内容如下 from flask import Flask from redis import Redis app Flask(__name__) redis Redis(hostos.environ.get(REDIS_HOST,127.0.0.1),port6379)app.route(/) def hello():redis.incr(hits)return f"Hello Container W…...

shell_52.Linux测试与其他网络主机的连通性脚本

实战演练 本节将展示一个实用脚本&#xff0c;该脚本在处理用户输入的同时&#xff0c;使用 ping 命令或 ping6 命令来测试与其他网络主机的连通性。 ping 命令或 ping6 命令可以快速测试网络主机是否可用。这个命令很有用&#xff0c;经常作为首选工具。如果只是检查单个主机&…...

OpenCV C++ 图像处理实战 ——《缺陷检测》

OpenCV C++ 图像处理实战 ——《缺陷检测》 一、结果演示二、缺陷检测算法2.1、多元模板图像2.2、训练差异模型三、图像配准3.1 功能源码3.1 功能效果四、多元模板图像4.1 功能源码五、缺陷检测5.1 功能源码六、源码测试图像下载总结一、结果演示...

Python操作MySQL基础使用

Python操作MySQL基础使用 链接数据库并查询数据 import pymysql# 链接数据库 conn pymysql.connect(host10.5.6.250,port3306,userroot,password******** )# 查看MySQL版本信息 print(conn.get_server_info()) # 5.5.27# 获取到游标对象 cursor conn.cursor()# 选择数据库…...

【pytorch】pytorch中的高级索引

这里只介绍pytorch的高级索引&#xff0c;是一些奇怪的切片索引 基本版 a[[0, 2], [1, 2]] 等价 a[0, 1] 和 a[2, 2]&#xff0c;相当于索引张量的第一行的第二列和第三行的第三列元素&#xff1b; a[[1, 0, 2], [0]] 等价 a[1, 0] 和 a[0, 0] 和 a[2, 0]&#xff0c;相当于索…...

基于图像识别的自动驾驶汽车障碍物检测与避障算法研究

基于图像识别的自动驾驶汽车障碍物检测与避障算法研究是一个涉及计算机视觉、机器学习、人工智能和自动控制等多个领域的复杂问题。以下是对这个问题的研究内容和方向的一些概述。 障碍物检测 障碍物检测是自动驾驶汽车避障算法的核心部分&#xff0c;它需要从车辆的感知数据…...

Spring boot定时任务

目录 前言一、使用 Scheduled 注解二、使用 ScheduledExecutorService三、使用 Spring 的 TaskScheduler四、使用第三方调度框架 前言 在 Spring Boot 中&#xff0c;有多种方法来编写定时任务&#xff0c;以执行周期性或延迟执行的任务。下面是几种常见的方式 一、使用 Sche…...

Glide原理

本文基于Carson整理 1.简介 相比其他几种图片加载框架&#xff0c;Glide性能最好。这得益于其高效的图片缓存策略 其还有多样化的媒体格式加载&#xff1a;如GIF、Video&#xff0c;对于商城首页需展示丰富样式、信息的页面需求来说&#xff0c;也是必不可少的。 2.加载原理…...

wps表格按分隔符拆分单元格

有数据如下&#xff1b;看选中区域&#xff0c;一个单元格中有一个v&#xff0c;空格&#xff0c;然后有三个数值&#xff0c;以空格分开&#xff1b;点击菜单中的数据-分列&#xff1b; 弹出分列向导&#xff1b;选择 分隔符号&#xff1b; 选择分隔符为空格&#xff1b;出现预…...

【SEC 学习】Vim 的基本使用

一、Vim 编辑器安装 yum install -y vim二、Vim 三种模式 命令模式 编辑模式 末行模式 三、三种模式之间的转换 1. 命令模式 -> 编辑模式 快捷键含义i从光标处插入I从光标所在行首插入a从光标后插入A从光标所在行末插入o从光标下一行插入O从光标上一行插入 2. 命令模式 …...

Linux中shell脚本练习

目录 1.猜数字 2.批量创建用户 3.监控网卡Receive Transmit 数据的变化 4.部署Linux 5.系统性能检测脚本 6.分区脚本 7.数据库脚本 1.猜数字 随机数的生成 使用环境变量RANDOM&#xff0c;范围是0&#xff5e;32767 编写guest.sh&#xff0c;实现以下功能&#xff1…...

AS/400简介

AS400 AS400 简介AS/400操作系统演示 AS400 简介 在 AS400 中&#xff0c;AS代表“应用系统”。它是多用户、多任务和非常安全的系统&#xff0c;因此用于需要同时存储和处理敏感数据的行业。它最适合中级行业&#xff0c;因此用于制药行业、银行、商场、医院管理、制造业、分销…...

FreeRTOS 中断管理介绍和实操

目录 中断定义 中断优先级 相关注意 中断相关函数 1.队列 2.信号量 3.事件标志组 4.任务通知 5.软件定时器 中断管理实操 中断定义 中断是指在程序执行的过程中&#xff0c;突然发生了某种事件&#xff0c;需要立即停止当前正在执行的程序&#xff0c;并转而处理这个…...

性能测试 —— Jmeter 常用三种定时器!

1、同步定时器 位置&#xff1a;HTTP请求->定时器->Synchronizing Timer 当需要进行大量用户的并发测试时&#xff0c;为了让用户能真正的同时执行&#xff0c;添加同步定时器&#xff0c;用户阻塞线程&#xff0c;知道线程数达到预先配置的数值&#xff0c;才开始执行…...

3分钟搞定专业视频!Auto-Video-Generator让你的创意瞬间变现实

3分钟搞定专业视频&#xff01;Auto-Video-Generator让你的创意瞬间变现实 【免费下载链接】auto-video-generateor 自动视频生成器&#xff0c;给定主题&#xff0c;自动生成解说视频。用户输入主题文字&#xff0c;系统调用大语言模型生成故事或解说的文字&#xff0c;然后进…...

聚焦AI专著生成:热门工具大盘点,满足不同写作需求

创新是学术专著的核心&#xff0c;也是写作过程中最重要的挑战。一本优秀的专著&#xff0c;不仅仅是将已有的研究成果拼凑在一起&#xff0c;而是需要提出贯穿整个作品的独到见解、理论框架或研究方法。在浩如烟海的学术文献面前&#xff0c;发掘尚未被触及的研究空白并不简单…...

Qwen2.5-VL-7B-Instruct效果对比:vs InternVL2、LLaVA-1.6在中文场景表现

Qwen2.5-VL-7B-Instruct效果对比&#xff1a;vs InternVL2、LLaVA-1.6在中文场景表现 1. 多模态视觉-语言模型概述 Qwen2.5-VL-7B-Instruct是阿里云推出的新一代多模态视觉-语言模型&#xff0c;专为中文场景优化设计。该模型能够同时理解图像和文本输入&#xff0c;并生成符…...

窗口管理效率革命:Topit如何重塑Mac多任务工作流

窗口管理效率革命&#xff1a;Topit如何重塑Mac多任务工作流 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 在数字化工作环境中&#xff0c;多任务处理已成为常…...

Zachman,TOGAF ,ADM深度分析比较

Zachman、TOGAF 与 ADM 深度分析比较 在企业架构(EA)领域,Zachman Framework 和 TOGAF 是两个最著名、最互补的框架。其中,ADM(Architecture Development Method) 是 TOGAF 的核心方法。理解三者的关系,有助于系统分析师在不同场景下选择或融合适合的架构实践。 一、概…...

HunyuanVideo-Foley数据库集成实践:管理海量生成音效的元数据

HunyuanVideo-Foley数据库集成实践&#xff1a;管理海量生成音效的元数据 1. 引言&#xff1a;音效管理的现实挑战 最近接触了几家正在使用HunyuanVideo-Foley的影视制作公司&#xff0c;发现一个普遍现象&#xff1a;随着生成音效数量的爆炸式增长&#xff0c;团队开始面临管…...

GEE实战:手把手教你用Sentinel-2数据计算植被覆盖度(附完整代码与避坑指南)

GEE实战&#xff1a;从零到一掌握Sentinel-2植被覆盖度计算全流程 清晨的阳光透过实验室的窗户洒在桌面上&#xff0c;一位生态学研究生正盯着电脑屏幕发愁——导师要求她在一周内完成研究区域的植被覆盖度分析&#xff0c;但GEE平台上那些晦涩的代码和突如其来的报错信息让她手…...

24小时无人值守:OpenClaw+Phi-3-vision-128k-instruct自动化监控系统

24小时无人值守&#xff1a;OpenClawPhi-3-vision-128k-instruct自动化监控系统 1. 为什么需要自动化监控系统 去年我负责一个内部数据看板项目时&#xff0c;经常遇到凌晨突发故障却无人值守的情况。直到第二天上班才发现问题&#xff0c;损失了宝贵的响应时间。传统监控工具…...

Bloaty二进制大小分析器:10个常见问题解决技巧

Bloaty二进制大小分析器&#xff1a;10个常见问题解决技巧 【免费下载链接】bloaty Bloaty: a size profiler for binaries 项目地址: https://gitcode.com/gh_mirrors/bl/bloaty Bloaty是一款强大的二进制大小分析工具&#xff0c;能够帮助开发者深入了解二进制文件的大…...

Python面向对象:封装、继承、多态

作为Python面向对象编程&#xff08;OOP&#xff09;的三大核心特性&#xff0c;封装、继承、多态是从编程新手进阶到熟练开发者的必备知识。它们不是晦涩的理论&#xff0c;而是能让代码更简洁、复用性更强、扩展性更好的实用工具。 一、什么是面向对象&#xff1f; 在讲三大特…...