欢迎光临散文网 会员登陆 & 注册

07编写并运行你的第一个Airtest脚本

2021-06-02 12:48 作者:Airtest酱  | 我要投稿

同学们好,我是网易AirtestProject的团队成员晓娟,欢迎大家来到我们的视频教程专栏《14天Airtest自动化测试小白课程》。

今天我们将进入一个全新的专题:自动化脚本编写专题。在这个专题中,我们主要想通过一些脚本编写的实操案例,让大家快速上手Airtest、poco和airtest-selenium等框架,并对自动化测试有更深的认知和实践。

今天我们先来学习下:如何编写并运行你的第一个Airtest脚本

录制/编写Airtest脚本

首先我们需要在IDE中连接上1台待测设备,这里以雷电模拟器为例(简单复习下连接设备的内容):

选择远程设备连接--输入雷电模拟器端口号5554--点击连接--等待设备列表中刷出雷电模拟器--点击connect完成连接。

接下来我们就可以用IDE的录制功能,来帮助我们完成一段简单的Airtest脚本了:

点击Airtest辅助窗的录制按钮,然后随着我们在设备上进行一些点击、滑动操作,脚本编辑窗口就自动生成了一些Airtest截图脚本,这个功能对新手同学来说会比较友好一些,只要我们用鼠标在设备画面上进行点击、滑动等操作,就会自动帮我们生成代码。

当然,除了这个录制功能,我们还可以使用Airtest辅助窗里面提供的功能按钮,写出更加丰富的Airtest脚本:


Airtest核心API介绍

1.在当前设备画面上进行一次点击:touch()

touch(Template(r"tpl1606730579419.png", target_pos=5))

touch((100, 100))

2.等待当前画面上出现某个匹配的Template图片:wait()

wait(Template(r"tpl1606821804906.png"), timeout=120, interval=3)

3.在当前设备画面上进行一次滑动操作:swipe()

swipe(Template(r"tpl1606814865574.png"), vector=[-0.0316, -0.3311])

swipe((100, 100), (200, 200))

4.检查设备上是否存在给定目标:exists()

exists(Template(r"tpl1606822430589.png"))

5.在目标设备上输入文本,文本框需要处于激活状态:text()

text("test")

text("test", enter=False)

6.在设备上执行keyevent按键事件:keyevent()

keyevent("HOME")

keyevent("KEYCODE_DEL")

7.对目标设备进行一次截图,并且保存到文件中:snapshot()

snapshot(msg="index")

snapshot(filename="test.png", msg="test")

8.设置一个等待sleep时间,它将会被显示在报告中:sleep()

sleep(1)

9.设备屏幕上存在断言目标:assert_exists()

assert_exists(Template(r"tpl1607324047907.png"), "assert exists")

10.设备屏幕上不存在断言目标:assert_not_exists()

assert_not_exists(Template(r"tpl1607324047907.png"), "assert not exists")

11.断言两个值相等:assert_equal()

assert_equal(1, 1, msg="assert 1==1")

12.断言两个值不相等:assert_not_equal()

assert_not_equal(1, 2, msg="assert 1!=2")

借助Airtest辅助窗的录制功能,和丰富的功能按钮,我们熟悉了一下Airtest的API。接下来我们可以尝试完成1个需求更加复杂的纯Airtest脚本,这个脚本需要我们学习一些基础的python语法,比如如何定义函数、如何编写条件语句和循环语句、如何使用python的time模块等等,这些python基础同学们可以在网上找到很多详细的教程,这里就不再重复讲解了:

先来看看我们这个脚本具体要做些什么:

1.进入网易云音乐

2.找到指定的薛之谦的歌曲

3.回到首页

4.进入抖音歌曲排行榜

5.完整运行上述脚本并统计运行时长

总共是5个需求,脚本是我们在课前就写好了的。因为考虑到如果在课上编写可能需要耗费过长的时间,所以我们事先准备好了。课上我们主要想把一些关键的知识点给大家先讲解清楚,然后课下的时候同学们可以尝试自己完成这个脚本。


另外需要这个示例脚本来学习的同学,可以到我们的官方公众号回复“A07”即可获取。


那我们回到这个脚本中来,可以看到,前面4个需求都被封装成了1个个的函数,脚本最后调用了这些函数,并计算了整个运行时长。

先来看第一部分:进入网易云音乐。

1.为保证app的初始状态一致,这里使用了clear_app()来清除了网易云音乐的应用,之后再用start_app()打开应用。这两个方法传入的都是应用包名。

2.之后点击同意服务条款,点击完同意之后,会有一个很长的启动动画,我们只有等这个启动动画结束之后,才能进行下一步操作,所以这里可以使用一些wait()等待。

3.然后再勾选服务协议,点击立即体验,就可以进入应用的主页了

4.最后我们还断言了一下,当出现排行榜的图标时,表明我们已经进入了云音乐的主页

这就是第一个需求的全部内容

那么第二个需求:找到指定的薛之谦的歌曲

1.点击搜索按钮之前,我们做了个存在的判断,因为刚才进入主页的时候,加载页面需要一定时间,我们先判断搜索按钮存在了,再进行点击,脚本会更加稳定些

2.接着就调用text()接口输入关键词“薛之谦”,然后一步步找到歌手薛之谦并进行点击

3.接着点击“近期热门”开始歌曲,在底部的播放列表中,左滑可以切换成下一首歌曲,为了找到指定的歌曲,我们需要写一个循环操作,当没有找到指定歌曲时,就一直左滑

4.找到歌曲后,进入歌曲页面,做一个断言表示成功找到了我们指定的歌曲

第三个需求:返回首页

这个比较简单,我们可以用4条点击返回按钮的脚本,也可以直接用返回动作的关键词语句,keyevent("BACK"),写个for循环,执行4次就行。

第四个需求:进入抖音排行榜

这个需求跟第2个需求有点类似,点击排行榜之后,要下滑好几次才能找到抖音排行榜,所以依旧可以写一个循环操作,没找到抖音排行榜之前就一直下滑。

最后1个需求就是执行上面写的几个方法,然后记录总的运行时长。为了保证运行失败我们也可以继续记录时长,我们使用了try-except方法,把几个方法的执行做了一个异常处理,这样即使有报错的话也不会终止脚本的运行,而是抛出任务执行失败的错误。

这个脚本的知识点大概就讲解这些,课后同学们可以自己尝试把这个脚本写出来。

运行脚本

那么讲了这么多编写脚本的内容之后,我们再来看看怎样在IDE里面运行脚本把。IDE是支持一键回放脚本的,我们可以先回到上面我们讲录制功能时自动帮我们生成的那个脚本,点击顶部菜单栏的运行脚本按钮(快捷键F5),就可以回放我们录制好的脚本了,非常简单:


但也有同学可能会问,如果不想在IDE中运行脚本,可以怎么执行呢?这个内容我们后面会专门花一节课来讲解,同学们可以继续关注我们后续的课程。

另外停止运行的按钮就在脚本运行按钮隔壁,快捷键为shift+F5。

生成/导出报告

运行完脚本之后,接下来就是查看我们的运行报告了。我们这里给大家展示下上述比较复杂的那个脚本的报告,点击IDE顶部菜单栏中查看报告的按钮(快捷键是ctrl+l),就会在我们的默认浏览器中打开1个html格式的报告,这里大家最好用谷歌浏览器来打开我们的Airtest报告,兼容性会更好一些。

在报告中,我们可以看到顶部关于报告的作者、描述等一些信息,下方还可以看到脚本中的断言是否成功,每一个步骤的画面截图如何等。


另外在IDE中,右键点击脚本名称,选择打开报告文件目录,可以直接打开报告文件所在的文件夹,一般来说,里面包含了很多截图文件、1个html报告和1个log.txt:


如果我们想把报告发给别人观看,直接把这个报告文件夹发给别人,别人是不能够正常查看的,我们需要把报告先导出,让里面包含所需的静态资源文件,别人才可以正常查看。导出方法也很简单,依旧是右键点击脚本名称,选择导出报告,再选择要保存导出报告的路径,IDE就会自动帮我们在指定路径下导出当前报告了:


可以看到,导出脚本的文件夹中,比刚才未导出的报告文件夹,多了很多东西,比如脚本文件、静态资源文件、脚本内的截图文件等等。

把导出好的报告,发给别人观看,别人才能够正常查看你生成的报告。

小结

好了,今天的课程就到此为止啦。这节课我们主要给大家讲解了如何编写Airtest脚本、如何运行脚本以及如何生成或导出报告。希望同学们在课后可以尝试把课中讲解的那个5个需求的案例脚本编写出来。


下节课我们会进入到poco脚本的学习和编写,下期我们不见不散~


07编写并运行你的第一个Airtest脚本的评论 (共 条)

分享到微博请遵守国家法律