个人对测试的理解--自动化UI测试

2023-05-16

系列文章目录

整理下个人对测试的一些想法和理解,个人之见。


文章目录

    • 系列文章目录
    • 整体思路
    • UI测试
      • WEB—UI
        • selenium
          • 快速入门
      • APP-UI
        • appnium
          • 快速入门
        • airtest
          • 快速入门
      • 桌面应用-UI
        • pywinauto
          • 快速入门


整体思路

  1. 自动化UI测试基于功能测试,主要是UI层面的功能操作
  2. 自动化需要较高的维护成本,适合长期稳定迭代的项目(不会频繁的更换框架)
  3. 编写脚本时应当优先完成主流程
  4. 代码应当考虑模块的复用性
  5. 简单地分为:WEB-UI、APP-UI、桌面应用-UI

UI测试

WEB—UI

当前软件测试发展趋势,提供可视化界面的需求下,更多的使用web界面,更为轻量、美观,功能实现也比较简单

selenium

毫无疑问,当前的web-UI自动化测试最热门的工具,通过webdriver实现对浏览器的操作,近乎完全模拟了测试人员在前端进行功能测试。

  • 语言支持:支持python、java、C#等主流软件,测试人员建议使用python,更为方便
  • 浏览器支持:chrome、firefox、IE等等,根据兼容性要求选择浏览器,多数情况下,chrome即可满足需求,代码无需变动或少量变动即可支持其他浏览器
快速入门

python + selenium + pytest

  1. 安装python以及selenium、pytest
  2. 下载webdriver,不同浏览器不同版本都不太一样:https://www.selenium.dev/downloads/ 或者 http://npm.taobao.org/mirrors/chromedriver chrome比较特别,因为google访问不了,建议用淘宝的源下载
  3. 编写脚本
  • 启动一个浏览器
import os
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

current_path = os.path.dirname(__file__)
chrome_driver = os.path.abspath(r"/../resource/tools/chromedriver.exe")
# 启动浏览器
driver = webdriver.Chrome(chrome_driver, 0, chrome_options)
driver.implicitly_wait(30)
# 打开百度
driver.get("https://www.baidu.com");
time.sleep(30)
# 关闭浏览器
driver.quit()
  • 建立一个方便编写的框架
    可以参考seleniumbase这个框架,主要实现页面与操作的分离,这个项目带有不少example,可以参考学习

  • 注意pytest的集成以及报表输出allure
    pytest报表最好以html格式呈现,方便后续查阅,推荐搭配allure使用

APP-UI

appnium

类似selenium的逻辑

快速入门

python + appnium + pytest

  1. 下载安装安卓SDK:http://tools.android-studio.org/index.php/sdk
  2. 安装安卓模拟器(方便测试、使用实机也可以),可以使用sdk自带的,也可以下载模拟器https://www.yeshen.com
  3. 环境变量配置:系统变量里面添加变量名 ANDROID_HOME:sdk(根目录),添加path:%ANDROID_HOME%/build-tools/27.0.1;%ANDROID_HOME%/platform-tools;%ANDROID_HOME%/tools
  4. 验证环境变量:cmd验证:adb:连接手机设备,安装卸载app aapt:获取包名和启动页名
  5. 安装nodejs(可以不装)
  6. 通过nodejs安装appnium,或者手动下载安装https://github.com/appium/appium-desktop/releases
  7. 通过appnium-doctor检查appnium是否安装正常
  8. 安装python模块:pip install Appium-Python-Client
  9. 编写脚本
  10. 查看元素没有web方便,可以使用UI AutomatorViewer查看元素

airtest

网易开发,主要基于图形匹配的前端测试,网易主要用于手机游戏的测试,脚本核心库(python)是airtest、pocoui等

快速入门

python + appnium + pytest

  1. 下载安装安卓SDK:http://tools.android-studio.org/index.php/sdk
  2. 安装安卓模拟器(方便测试、使用实机也可以),可以使用sdk自带的,也可以下载模拟器https://www.yeshen.com
  3. 环境变量配置:系统变量里面添加变量名 ANDROID_HOME:sdk(根目录),添加path:%ANDROID_HOME%/build-tools/27.0.1;%ANDROID_HOME%/platform-tools;%ANDROID_HOME%/tools
  4. 验证环境变量:cmd验证:adb:连接手机设备,安装卸载app aapt:获取包名和启动页名
  5. 安装nodejs(可以不装)
  6. 通过nodejs安装appnium,或者手动下载安装https://github.com/appium/appium-desktop/releases
  7. 通过appnium-doctor检查appnium是否安装正常
  8. 安装python模块:pip install Appium-Python-Client
  9. 编写脚本
  10. 查看元素没有web方便,可以使用UI AutomatorViewer查看元素

桌面应用-UI

pywinauto

原生的windwos,或者QT5这种实现来微软的UIA的都可以使用python的pywinauto库,控件查看可搭配微软的inspect或者accessibility insight,桌面应用界面也和网页也差不了多少。

快速入门

python + pywinauto

from pywinauto import Desktop, Application

app = Application(backend = 'uia').start(r"E:\****.exe")
# 调试用,直接链接已打开的应用
# app = Application(backend='uia').connect(process=11480)
# app.Properties.print_control_identifiers()

# 获取整个窗口
dlg = app['测试应用']
# 也有获取全部窗口的
dialogs = app.windows()
# 获取窗口内的控件
export_button1 = app['测试应用']['aaa]
# 或者
export_button2 = dlg['aaaa']

# 输出该控件信息
export_button2.print_control_identifiers()
# 点击该按钮
export_button2.click()
# 弹出一个提示框
success_dialog = dlg['****']
# 点击确认关闭弹框,ok按钮在一个groupbox里,不知道为啥['']不行
success_dialog.GroupBox.OK.click()
# 或者,好像也不行
# success_dialog.window(title_re="GroupBox").windows(title_re="OK").click()
# 点击显示列表
dlg['-----'].click()

print("end")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

个人对测试的理解--自动化UI测试 的相关文章

  • ssh -X 使用遇到的问题

    ssh可以在登录时通过 X选项开启远程服务的X服务 xff0c 这样服务器端的需要调用X服务的程序就能开启了 最简单的例子就是可以使用服务器段的gedit程序编译文件了 问题是这样的 xff1a 在IDL程序中有个write gif程序 x
  • Docker部署Gitlab和gitlab-runner,搭建一站式DevOps平台

    一 首次安装Gitlab并配置Gitlab runner CI CD Gitlab Docker 官方安装文档 xff1a https docs gitlab cn jh install docker html 设置Gitlab数据和配置挂
  • 打开 word 显示内存或磁盘空间不足 ,Word 无法显示所请求的字体

    打开word显示内存或磁盘空间不足 xff0c Word无法显示所请求的字体 使用360加速球优化一下 xff0c 恢复正常
  • 使用win10工具远程连接树莓派

    win10远程连接树莓派 1 使用ssh远程连接1 1系统烧录1 2 SSH登录 2 使用win10的mstsc工具远程连接2 1进入远程ssh后 xff0c 修改软件源 xff0c 否则太慢 xff08 清华软件源地址 https mir
  • 网络 - 笔记本无线转为有线

    工具 路由器一个 计算机两台C1和C2 场景说明 xff1a 将C1计算机的无线网络通过路由器转为有线网络 xff0c 并提供给C2计算机使用 第一步 xff1a 硬件搭建 连接C1和路由器 xff1a 将网线的A端插入路由器的WAN口 x
  • 医学案例统计分析与SAS应用--自学笔记

    目录 第二章医学研究设计与SAS实现科研设计思路样本含量估计实验设计 科研设计的sas实现完全随机设计随机区组设计析因设计关系型研究 第三章 统计描述与SAS分析统计描述及sas命令简介定量资料的统计描述分类资料的统计描述 第四章 定量资料
  • 计算机基础 - 左移、右移和计算逻辑

    左移 指的是位移动 xff0c 左移就是将数据位向左移动 xff0c 例如十进制10 二进制为0000 1010 左移4位后得到1010 0000 xff0c 转为十进制后为160 如果是左移5位 xff0c 那么超出部分被丢弃得到的就是0
  • C++ 二叉树实现词频分析

    通过二叉树存单词 xff0c 并且对总共的单词数量进行计数 xff0c 二叉树自适应的将出现频率高的单词往上移动以减少二叉树的搜索时间 代码如下 span class hljs comment genSplay h span span cl
  • C++ cout输出字符

    cout输出字符时 xff0c 可以使用单引号 xff1a cout lt lt span class hljs string 39 39 span lt lt endl span class hljs regexp span 输出分号 s
  • Linux 多进程多线程编程

    一 创建进程 1 进程号 进程号的类型是pid t xff08 typedef unsigned int pid t xff09 获得进程和父进程ID的API如下 xff1a include lt sys types h gt includ
  • dpdk探究1-理解dpdk的运行逻辑

    DPDK介绍 DPDK主要功能 xff1a 利用IA xff08 intel architecture xff09 多核处理器进行高性能数据包处理 Linux下传统的网络设备驱动包处理的动作可以概括如下 xff1a 数据包到达网卡设备网卡设
  • C++11多线程实现的一道面试题

    题目 xff1a 子线程循环 10 次 xff0c 接着主线程循环 100 次 xff0c 接着又回到子线程循环 10 次 xff0c 接着再回到主线程又循环 100 次 xff0c 如此循环50次 xff0c 试写出代码 这里涉及到的问题
  • 第四章 智能指针

    裸指针问题如下 xff1a 裸指针在声明中并未指出 xff0c 裸指针指涉到的是单个对象还是一个数组 裸指针在声明中也没有提示是不是要对其进行虚构 换言之 xff0c 无法得知指针是否拥有其指涉的对象 或者是否空悬指针的析构是不是拥有重载的
  • dpdk无锁队列

    这篇博客是从网上博客整理摘抄而来 xff0c 具体参考的博客内容在文末给出 Linux无锁队列 kfifo概述 Linux内核中有一个先进先出的数据结构 xff0c 采用环形队列的数据结构来实现 xff0c 提供一个无边界的字节流服务 最重
  • C++虚函数和虚函数表原理

    虚函数的地址存放于虚函数表之中 运行期多态就是通过虚函数和虚函数表实现的 类的对象内部会有指向类内部的虚表地址的指针 通过这个指针调用虚函数 虚函数的调用会被编译器转换为对虚函数表的访问 xff1a ptr gt span class hl
  • 非递归快排

    非递归快排 通过使用栈来模拟函数栈的调用 xff0c 每次将首尾指针存入到栈中 xff0c 并对首尾之间区域进行快排 span class hljs preprocessor include lt iostream gt span span
  • ppt基础篇--自学笔记

    字体 给文字加边框 加背景 底纹logo 方框 加透明框 拆分 字体镂空 不规则图形 xff08 结合背景 xff09 图片 删除背景 xff08 两张叠加 xff09 点击设置透明色 xff08 背景为纯色 xff09 背景虚化 添加矩形
  • Golang Assertion

    Go中所有的类型都可以被转化成interface xff0c 通常在传入可变参数中的API中 xff0c 可变参数的类型就是interface func typeConversion strs interface ret string fo
  • 解决Idea Maven生成的jar运行出现“没有主清单属性”问题

    1 问题描述 通过maven构建了jar文件 xff0c 如图所示 2 命令窗口运行jar 提示 没有主清单属性 2 1 分析问题 在打包构建的jar目录内 xff0c 可以看到有一个MANIFEST MF文件 xff0c 如图所示 xff

随机推荐

  • VMWare虚拟机扩展磁盘空间(扩充root根目录空间)

    1 扩展虚拟机磁盘空间 Vm虚拟机下Linux扩展原有磁盘空间 xff0c 10G 10G的基础上不能满足需求 xff0c 只好进行磁盘扩展 调整到合适的磁盘空间 需注意以下几点 xff1a linux只能扩展磁盘容量而不能减小 xff0c
  • vim批量操作技巧

    vim批量操作技巧 目录 vim批量操作技巧一 列操作二 批量复制与删除三 批量替换四 批量注释 一 列操作 删除列 在正常模式下 xff08 一般按Esc键就是 xff09 光标定位 CTRL 43 v 进入 VISUAL BLOCK 可
  • VMware17pro图解安装 Rocky Linux 9.1

    1 引言 Rocky Linux为CentOS Linux 的继承者 RHEL 9 的复制品 下面是在VMware上安装实例 1 1 下载安装VMware VMware下载 xff1a VMware官网下载 1 2 下载Rocky9 x镜像
  • (二)Proxmox7.3 VE 安装Rocky9.1系统

    1 准备环境 PVE虚拟管理平台能正常访问 https IP 8006 由于我的服务器磁盘空间不足4G了 xff0c 这里我就安装个debian虚拟机来演示吧 xff0c 毕竟它小巧不占用地方 xff0c 主要是想记录好pve创建虚拟机的步
  • No Spring Session store is configured: set the 'spring.session.store-type'

    发现session store type使用来存放session的存储方式 xff0c 目前Spring boot中只支持Redis方式 由于本应用暂无需将session放入redis的需求 xff0c 故这里就可以将session sto
  • idea修改git账号及密码的方法

    IDEA修改git账号及密码的方法 xff1a 1 file gt settings gt passwords 这里写图片描述 默认In KeePass 保存密码 切换到Do not save forget password after r
  • KETTLE使用教程

    1 Kettle的下载与安装 kettle的最新下载地址 xff1a http community pentaho com projects data integration 由于Kettle 是采用java 编写 xff0c 因此需要在本
  • Hive lag()与lead() 函数

    lag与lead函数是跟偏移量相关的两个分析函数 xff0c 通过这两个函数可以在一次查询中取出同一字段的前N行的数据 lag 和后N行的数据 lead 作为独立的列 从而更方便地进行进行数据过滤 这种操作可以代替表的自联接 xff0c 并
  • WebService简单案例实例

    本周工作日即将结束 xff0c 下周项目经理安排了一项任务可能需要使用到webservice xff0c 但本人之前尚未使用过 xff0c 网上查了一些案例看了看 在此小记一篇留作日后回首也希望可以帮助到查看者朋友 1 什么是WebServ
  • Java中CountDownLatch介绍与应用

    正如每个Java文档所描述的那样 xff0c CountDownLatch是一个同步工具类 xff0c 它允许一个或多个线程一直等待 xff0c 直到其他线程的操作执行完后再执行 在Java并发中 xff0c countdownlatch的
  • Windows下搭建 Rust 开发环境

    Rust 支持很多的集成开发环境 xff08 IDE xff09 或开发专用的文本编辑器 查看官网公布支持的开发工具 Rust 的编译工具依赖 C 语言的编译工具 xff0c 可以使用 Microsoft C 43 43 生成工具 或者 M
  • ubuntu安装mysql错误处理

    1 错误信息 W GPG error http repo mysql com apt ubuntu xenial InRelease The following signatures were invalid KEYEXPIRED 1487
  • 如何安装 SUSE Linux Enterprise Server 15 SP4

    SUSE Enterprise Linux Server SLES 是一种现代的模块化 Linux 发行版 xff0c 主要为服务器和大型机开发 它专注于支持生产工作负载 xff0c 通常由大型组织用于托管和运行应用程序 SUSE还支持传统
  • Xcode 之nib文件

    在iOS 开发中 xff0c 不可避免的肯定会接触到interface builder xff0c 也就是IB窗口 这儿IB就是使用nib文件储存GUI资源 这儿所说的nib文件是一种数据文件 xff0c 用于存储可在应用程序需要时使用的一
  • 出现 mkdir() Permission denied 问题解决

    正常我们在写项目的时候 xff0c 本地可以可以使用 xff0c 部署到服务器为什么就出现这个错误了呢 xff1f 因为我们服务器使用的是Linux系统 xff0c 默认的目录权限没有全部开启的 xff0c 造成执行创建文件的时候报错 xf
  • 报错A non well formed numeric value encountered(Thinkphp5时间戳自动转换问题)

    数据库表字段设置 datetime类型 xff0c 渲染的时候系统会自动进行转换 xff0c datetime类型再做一次转换就出现了 A non well formed numeric value encountered 错误 解决方法
  • 【开箱即用】VirtualBox Ubuntu20.04.6、22.04.2虚拟机下载

    简介 今天继续我们的开箱即用系列 为了简化Ubuntu虚拟机的制作 xff0c 减少重复劳动 xff0c 提高生产效率 xff0c 本公众号提供了基于VirtualBox制作的Ubuntu纯净虚拟机 xff0c 供学习交流使用 下载 Ubu
  • anaconda安装后桌面无快捷方式

    在安装目录的Anaconda3 Scripts中找到需要的exe文件 xff0c 生成快捷方式到桌面即可 如果想要改变快捷方式的图标 xff0c 可以在桌面快捷方式上右键选择属性 xff0c 点击更改图标 浏览 输入图标地址 在安装的Ana
  • 洛谷 [P1825 [USACO11OPEN]Corn Maze S] {搜索|BFS} 奋斗的珂珂~

    题目描述 This past fall Farmer John took the cows to visit a corn maze But this wasn t just any corn maze it featured severa
  • 个人对测试的理解--自动化UI测试

    系列文章目录 整理下个人对测试的一些想法和理解 xff0c 个人之见 文章目录 系列文章目录整体思路UI测试WEB UIselenium快速入门 APP UIappnium快速入门 airtest快速入门 桌面应用 UIpywinauto快