appium和airtest_关于Airtest自动化测试工具

一开始知道Airtest大概是在年初的时候,当时,看了一下官方的文档,大概是类似Sikuli的一个工具,主要用来做游戏自动化的,通过截图的方式用来解决游戏自动化测试的难题。最近,移动端测试的同事尝试用它的poco库来做自动化,看样子还不错,所以,这里推荐给各位同学。

### Airtest IDE

这是Airtest测试工具标配的IDE,目的是方便我们用于录制/编写自动化测试。

你可以使用账号登录或直接点击左下角“skip”按钮跳过。

启动Android模拟器或者用PC连接一台手机。通过adb命令检查移动设备。

> adb devices

List of devices attached

emulator-5554 device

当我在Android模拟器中操作时,Airtest IDE右侧的界面是同步的,这一点比很多移动测试工具做的优秀,例如,appium desktop必须手动刷新才能获取最新的界面。

#### Airtest

Airtest IDE支持Airtest脚本的录制,用法非常简单,你甚至可以先不用看它的API,通过录制来熟悉它的API。

右侧Airtest窗口以及API,点击右上角录制按钮,然后,就可以在映射的Android模拟器界面上点点点了。

以下是我点点点,生成的脚本。

过程非常简单,点击桌面上的计算器图标,打开编辑器输入1+1= ,然后,点击工具栏上的 “运行”按钮,就可以回放了。

这种脚本更适合游戏,因为游戏界面很难定位,图片识别(截图)的方式确实是不错的选择。

###Poco

Poco是另外一种形式的脚本,它与一般的自动化工具一样,通过元素本身的属性来定位元素,并且它同样支持录制。\

点击右上角第一个的录制按钮。然后,继续在android映射的界面上点点点。

因为脚本里面没截图,我就单独拿出来了。

__author__ = "fnngj"

from poco.drivers.android.uiautomation import AndroidUiautomationPoco

poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

poco("计算器").click()

poco("com.android.calculator2:id/digit_1").click()

poco("com.android.calculator2:id/op_add").click()

poco("com.android.calculator2:id/digit_1").click()

poco("com.android.calculator2:id/eq").click()

从poco的API来看比appium更为简洁。

如果你要做的是非游戏的APP的话,poco应该是我们后面学习的重点。这样的代码不管是和单元测试框架结合还是使用PO设计模式都是没有问题的。

而且,同样提供元素的属性展示,又有录制功能加持,在开发效率上应该会提高不少。

如果,你刚好又会Python,那么这将是一个不错的选择。

欢迎大家加入我们软件测试技术交流群(群号见文章开头图片)

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

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

相关文章

easyexcel 设置标题_使用easyexcel完成复杂表头及标题的导出功能(自定义样式)

如需客户端指定excel版本,只需要判断后缀名然后在controller中的.excelType(ExcelTypeEnum.XLS)做指定输出内容格式即可***(注意表格行高列宽统一设置是在实体类的类名注解上,如果需要对表格进行精细的宽高设置需要删除掉这两个注解,可以在拦截器使用row的方法进行设置)1. ## 引…

mysql distinct两列_正在检索两列,并对MySQL中的每列应用“distinct”

这是一张桌子books----------------------------| author_fname | author_lname |----------------------------| Dan | Harris || Freida | Harris || George | Saunders |----------------------------我知道如果DISTINCT用作SELECT DISTINCT author_fname, author_lname FRO…

mysql笛卡尔积 去重_MySQL入门(函数、条件、连接)

MySQL入门(四)distinct:去重mysql>:create table t1(id int,x int,y int);mysql>: insert into t1 values(1, 1, 1), (2, 1, 2), (3, 2, 2), (4, 2, 2);mysql>: select distinct * from t1; # 全部数据mysql>: select distinct x, y from t1; # 结果 1,…

nmon安装为什么重启mysql_Nmon的安装及使用

一、下载Nmon根据CPU的类型选择下载相应的版本:二、初始化工具[rootmululu ~]# cd /opt[rootmululu opt]# mkdir nmon[rootmululu opt]# cd nmon[rootmululu nmon]#wget http://sourceforge.net/projects/nmon/files/download/nmon_x86_12a.zip[rootmululu nmon]# u…

mysql join 循环_关于mysql联表的内嵌循环操作nested loop join中on和where执行顺序问题...

mysql的理论依据没找到,个人理解是先执行where的过滤条件,先关联再过滤明显做的是无用功。oracle中倒是能在执行计划中看到,先执行的是过滤条件(下面代码中最后一行)。explain plan for SELECT * FROM tmp_t2 t2 LEFT JOIN tmp_t1 t1 ON t2.i…

python非法语句是_python 如何优雅的处理大量异常语句?

bs4的链式调用很赞,所以我把soup包装了一下class MY_SOUP():包装类def __init__(self,soup):self.soup soupif soup:if soup.string:self.string soup.string.strip()else:self.string Noneelse:self.string Nonedef find(self, *args, **kw):ret self.soup.fi…

Iptables详解+实例

2019独角兽企业重金招聘Python工程师标准>>> Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则Iptables有利于…

django ipython shell_通過django的shell_plus編寫ipython腳本

Im writing a shell script which runs a command through ipython with the -c option like this:我正在編寫一個shell腳本,它通過ipython運行一個命令,使用-c選項,如下所示:ipython -c "from blah import myfunct; myfunct()"but…

阿里云服务器安装onlyoffice_阿里云服务器安装 JDK 8

欢迎关注“科技毒瘤君”&#xff01;上一期给大家分享了如何申请阿里云的免费云服务器&#xff0c;还没有看过的小伙伴可以先前往了解 >>阿里云免费服务器<<这一次将会为大家分享如何在服务器上配置 Java环境&#xff0c;这里演示使用的系统为Ubuntu 18.04 64位&am…

js发送请求

1.Chrome控制台中 net::ERR_CONNECTION_REFUSED js频繁发送请求&#xff0c;有可能连接被拒绝&#xff0c;可用setTimeout&#xff0c;过几秒发送&#xff0c;给个缓冲时间 var overlayAnalystService L.supermap.spatialAnalystService(serviceUrl); setTimeout(function () …

据说有99%的人都会做错的面试题

这道题主要考察了面试者对浮点数存储格式的理解。另外&#xff0c;请不要讨论该题本身是否有意义之类的话题。本题只为了测试面试者相关的知识是否掌握&#xff0c;题目本身并没有实际的意义。 下面有6个浮点类型变量&#xff0c;其中前三个是float类型的&#xff0c;后三个是d…

php使用mysql5和8的区别_mysql8.0和mysql5.7的区别是什么?

区别&#xff1a;mysql8.0的索引可以被隐藏和显示&#xff0c;当一个索引隐藏时&#xff0c;他不会被查询优化器所使用&#xff1b;2、mysql8.0新增了“SET PERSIST”命令&#xff1b;3、从mysql8.0开始&#xff0c;数据库的缺省编码将改为utf8mb4&#xff0c;包含了所有emoji字…

mysql pt check sum_percona工具pt-table-checksum

利用pt-table-checksum进行数据库同步检查rpm方式#wget percona.com/get/percona-toolkit.rpm源码方式#wget http://www.percona.com/downloads/percona-toolkit/2.2.1/percona-toolkit-2.2.8.tar.gz#yum install perl perl-CPAN perl-DBD-MySQL perl-Time-HiRes解压&#xff0…

如何通过BBED找回删除数据

项目案例&#xff1a;客户删除delete了重要数据&#xff0c;无备份&#xff0c;客户联系我&#xff0c;要求恢复相应数据。本次通过实验方式重现客户现场。备份高于一切&#xff0c;首先备份&#xff0c;再操作 创建表格&#xff1a; create table king(age number,name varcha…

mysql 重置密码语音_数字语音信号处理学习笔记语音信号的同态处理(2)

5.4 复倒谱和倒谱 定义 设信号x(n)的z变换为X(z) z[x(n)]&#xff0c;其对数为&#xff1a; (1) 那么 的逆z变换可写成&#xff1a; (2) 取 (1)式则有 (3) 于是式子(2)则可以写成 (4) 则式子(4)即为信号x(n)的复倒谱 的定义。因为 一般为复数&#xff0c;故称 为复倒谱。如果对…

NFS 八步神曲

Server:第一步yum install - y nfs*第二步vi /etc/exports第三步/var/testdirs *(rw,all_squash,anonuid99,anongid99,sync)第四步service nfs start第五步chkconfig --level 35 nfs on Client第一步mount 192.168.1.X:/var/www/testdirs /var/www/testdirs第二步vi /et…

mysql权限日志_mysql权限管理、日志管理及常用工具

mysqlbinlog用法如下&#xff1a;mysqbinlog mysql.err 查询错误日志当然可以通过添加参数来查看指定内容,如&#xff1a;mysqlbinlog mysql-bin.000001 -d test 只显示对test数据库的二进制日志mysqlbinlog mysql-bin.000001 -o 3 -r result-file 首先忽略前三个操作&…

Juicer.js模板引擎问题

由于jsp中的EL表达式语法和jquery.tmpl十分类似&#xff0c;&#xff0c;所以单纯的使用${name}&#xff0c;数据是渲染不上tmpl的. SO.. 要加上转义: ${${}amount} 或者 \${amount} 转载于:https://www.cnblogs.com/fighxp/p/7890288.html

python把回车作为输入_python将回车作为输入内容的实例

当input输入内容的时候,许多情况下输入回车键另起一行输入,但是这时候Pycharm就执行程序,然后结束,导致无法继续输入内容。 原因:Python默认遇到回车的时候,输入结束。所以我们需要更改这个提示符,在遇到其他字符的时候,输入才结束。 比如有一个任务: 请输入文件名:悯…