Airtest:Windows桌面应用自动化测试一

news2024/12/23 23:02:41

Airtest:Windows桌面应用自动化测试一

  • 一、为什么选择Airtest?
  • 二、官方文档
  • 三、环境搭建
  • 四、简易操作
    • 1、模拟双击桌面应用
    • 2、连接应用窗口
      • (1)嵌入方式连接(2种方式连接应用窗口)
      • (2)非嵌入方式连接
      • (3)使用脚本连接应用
      • (4)注意事项
    • 3、编写代码时,图片与代码的转换
    • 4、运行程序时,要求可见
    • 5、连接32位应用要求32位python
    • 6、录制脚本

一、为什么选择Airtest?

1、因为它集成了pywinauto

2、我相信他应该是比pywinauto更强大的东西

3、我想使用它实现Windows桌面应用自动化

二、官方文档

1、中文

欢迎使用 - Airtest Project Docs
Airtest Project Docs
https://airtest.doc.io.netease.com/

2、github

Airtest — airtest 文档
https://airtest.readthedocs.io/zh_CN/latest/README_MORE.html

三、环境搭建

1、使用官方推荐的Airtest IDE

安装与启动 - Airtest Project Docs
Airtest Project Docs
https://airtest.doc.io.netease.com/IDEdocs/3.1getting_started/AirtestIDE_install/

四、简易操作

1、模拟双击桌面应用

(1)使用IDE连接桌面(2种方式)

(2)点击touch去选择图标,并双击

(3)注意事项

如果没有连接桌面,可能点击touch没法选择,或者touch直接置灰,而且运行时将报错

(4)验证结果

这个双击桌面应用图标并没有成功打开应用
在这里插入图片描述
在这里插入图片描述

2、连接应用窗口

(1)嵌入方式连接(2种方式连接应用窗口)

不推荐嵌入方式连接桌面应用,因为桌面应用界面太大了,不像手机应用友好。当然,可以单独作为一个窗口分离出来,只是会有一些不兼容或不好用的情况,如窗口改变会自动从IDE分离出来。但是,这个功能有着非常鸡肋(至少1.2.13的win应用是这样)的脚本录制功能,可在写代码阶段使用,需要以嵌入的方式录制。
在这里插入图片描述

(2)非嵌入方式连接

设置好后按照嵌入式方式连接窗口的操作步骤,即可实现连接
在这里插入图片描述
在这里插入图片描述

(3)使用脚本连接应用

① 使用窗口句柄

不推荐这种方式,因为这个句柄会改变。

auto_setup(__file__,devices=["Windows:///133194"])

② 使用正则表达式匹配窗口TITLE

推荐使用这种方式,窗口TITLE一般不变。

 例如匹配“吹梦到西洲”后面跟着换行符以外的任意字符的窗口title
auto_setup(__file__,devices=["Windows:///?title_re=吹梦到西洲.*"])

③ 连接WINDOWS桌面

不指定devices具体参数,连接的就是桌面。

auto_setup(__file__,devices=["Windows:///"])
不指定devices参数,将没有连接对象而给出报错信息,或连接IDE已经连接的对象成功(对象中有该目标时成功,没有将报错)

auto_setup(__file__)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(4)注意事项

① 运行代码时,最好不要通过IDE连接窗口,而是通过代码连接
在这里插入图片描述
②运行代码的连接对象,如果要通过IDE连接,代码应该与实际连接对象保持一致

在这里插入图片描述

3、编写代码时,图片与代码的转换

在这里插入图片描述

4、运行程序时,要求可见

(1)对象不可见时,将会报错

(2)IDE内的图标也会被点击

解决方案:要么加延时,运行后将IDE缩到最小;要么指令运行代码;要么脚本里指定连接对象运行(需要注意,如果是桌面,将是全局的)
在这里插入图片描述

5、连接32位应用要求32位python

如图提示,要求应用连接时,python位数与应用保持一致,这种情况可以使用句柄方式操作(虽然不推荐)。
在这里插入图片描述
在这里插入图片描述

6、录制脚本

这个功能在录制win应用脚本时,并不好用,如双击图标不能录制、输入字符不能录制等等,目前(1.2.13的win应用录制)非常鸡肋。
在这里插入图片描述

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

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

相关文章

设计模式学习之代理模式

设计模式系列往期文章 设计模式学习之策略模式设计模式学习之策略模式在前端的应用设计模式学习之简单工厂模式设计模式学习之工厂方法模式设计模式学习之抽象工厂模式设计模式学习之策略模式和简单工厂模式的对比设计模式学习之观察者模式设计模式学习之模板方法模式 代理模…

怎么把录音转文字?录音转文字怎么操作

以前在采访过程中,总是需要及时记录采访者的回答,并把这些回答准确地记录到笔记本上。然而手写记录不仅效率低下,还可能因为笔迹潦草而导致记录错误。 后来在前辈的指导下,我才知道可以使用录音转文字工具来解决这些问题&#xf…

[安洵杯 2019]game

前言 llvm混淆,第一次接触到,没找到可以直接反混淆的工具,但看了相关知识后,发现有效代码依旧是原有的那一小部分,所以可以直接看有意义的部分代码,有时间好好了解下吧 代码分析 v8是我们输入的&#xff…

设计模式篇(Java):适配器模式

设计模式篇(Java):建造者模式 八、适配器模式 8.1 适配器模式基本介绍 生活中的适配器例子 比如生活中的插座,在不同国家插座有着不同的规格,如果我们从一个国家去另外一个国家需要使用插座时就需要一个中间转换器把两种不同规则的插座适配一…

【数据结构导论】第 3 章:栈、队列和数组

目录 一、栈 (1)栈的基本概念 ① 定义 ② 示意图 ③ 栈的特点 ④ 栈的基本运算 (2)栈的顺序实现 ① 顺序栈及常用名词 ② 顺序栈的类型定义 ③ 顺序栈的基本运算 Ⅰ. 初始化 Ⅱ. 判栈空 Ⅲ. 进栈 Ⅳ. 出栈 Ⅴ. …

【JavaSE】程序逻辑控制

目录 【1】概念 【2】顺序结构 【3】分支结构 【3.1】if 语句 【3.2】switch 语句 【4】循环结构 【4.1】while 循环 【4.2】for 循环 【4.3】do while 循环 【4.4】break 关键字 【4.5】continue 关键字 【5】输入输出 【5.1】输出到控制台 【5.2】从键盘输入 …

第38节:cesium 风场效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><!

抖音seo矩阵系统源码开发部署|抖音小程序接入(一)

一、 开发部署步骤&#xff1a; &#xff08;1&#xff09;申请开放平台服务商 &#xff08;2&#xff09;申请开放平台网站应用 &#xff08;3&#xff09;申请开放平台应用权限 &#xff08;4&#xff09;提交各个API接口申请文档 &#xff08;5&#xff09;审核通过技…

JVM实战-2023线上项目突发OOM以及快速定位解决全过程

现象描述&#xff1a; 用户在进行报表下载过程中&#xff0c;每隔几天系统就会报错500&#xff0c;导致无法进行报表下载。 原因分析: 通过查看系统log日志以及gc日志&#xff0c;发现是因为下载报表过程中JVM频繁进行Full GC&#xff0c;而且老年代的堆内存不断增加且无法回…

chatgpt赋能python:Python彻底删除指南:为什么需要彻底删除Python?

Python彻底删除指南&#xff1a;为什么需要彻底删除Python&#xff1f; Python是一种高级编程语言&#xff0c;它广泛用于各种应用程序的开发。但是&#xff0c;对于某些开发者来说&#xff0c;可能需要从他们的计算机中彻底删除Python。这可能是因为他们需要将Python版本更新…

Linux--打印内容或者插入内容:echo

语法&#xff1a; echo 内容 作用&#xff1a;打印内容到显示器echo 内容 > 不存在的文件 作用&#xff1a;文件创建&#xff0c;并将内容插入新创建的文件中echo 内容 > 存在的文件 作用&#xff1a;覆盖文件原有的内容 echo 内容 >> 存在的文件 作用&#xff1a…

Redis的持久化机制(2)

AOF 以独立日志的方式记录每次写命令&#xff08;读操作不记录&#xff09;&#xff0c;重启时再重新执行AOF文件中的命令来恢复数据。AOF会先把命令追加在AOF缓冲区&#xff0c;然后根据对应策略写入硬盘&#xff08;appendfsync&#xff09;&#xff0c;它只许追加文件但不可…

【vue:淘宝rem自适应 】

vue:淘宝rem自适应 1.安装lib-flexible&#xff1a;cnpm install lib-flexible --save 2.在main.js中引入&#xff1a;import lib-flexible/flexible.js’ 3.配置flexible找到vue-cli路径node_modules/lib-flexible/flexible.js&#xff0c;然后修改rem换算单位 4.配置px to re…

ThreadLocal-线程安全利器

原文链接&#xff1a;https://www.jylt.cc/#/detail?activityIndex2&id9df3fd62d6ee13ff555c30157798b092 ThreadLocal是什么 ThreadLocal用来提供线程内部的局部变量&#xff0c;是各个线程独有的&#xff0c;该变量无法被其他线程访问。主要有以下作用&#xff1a; 解…

pyqt5实现线程与弹窗功能

pyqt5实现线程与弹窗功能 效果图&#xff1a; 示例下载 点我下载 https://download.csdn.net/download/lm_is_dc/87982279 简介 Pyqt5线程使用 QThread, pyqtSignal, QMutex, QWaitCondition来实现&#xff0c;涉及到线程&#xff0c;锁&#xff0c;信号量&#xff0c;线程…

深入理解计算机系统(2)_计算机基本组成

深入理解计算机系统系列文章目录 第一章 计算机的基本组成 1. 内容概述 2. 计算机基本组成 第二章 计算机的指令和运算 第三章 处理器设计 第四章 存储器和IO系统 文章目录 深入理解计算机系统系列文章目录前言参考资料一、组成架构&#xff08;冯/图&#xff09;1. 组成架构2…

42. 接雨水

题目链接&#xff1a;力扣 解题思路&#xff1a;从左往右按列进行计算&#xff0c;依次计算每一列能够接到的雨水数量。对于当前列能够接到的雨水数量是由左右两边最高的两根柱子决定的&#xff0c;类似于木桶定律&#xff08;一只水桶能装多少水取决于它最短的那块木板&#x…

AI实践-定制你的专属简历-软件测试

简历对于找到一份理想的工作至关重要。但是&#xff0c;准备简历这一过程却让人感到头疼和繁琐&#xff0c;而且如何突出自己的优势&#xff0c;也是许多求职者遇到困惑。 chatgpt不会受到情感和个人喜好的影响&#xff0c;能够通过算法和数据分析为您编写最合适的简历。并且可…

目标检测算法-YOLOV5解析(附论文与源码)

目标检测算法-YOLOV5解析&#xff08;附论文与源码&#xff09;

数据结构 | 顺序二叉树

一、数据结构定义 1、顺序二叉树 /* 顺序二叉树 */ typedef char TreeType; typedef struct seqTree{int MAXNUM; // 最大元素个数int curNum; // 元素的个数TreeType nodelist[]; // 顺序二叉树节点存储 } *SeqTree; 本次代码中二叉树的结构如下图&#xff0c;用层次序列可…