2023年11月27日发(作者:)

Pycharm上编写Airtest脚本的常见问题

有很多⼩伙伴会跑来交流群问我们,为什么在 可以跑通的脚本,转⽤ 来执⾏就会出现⼀⼤堆问题,难道 的脚本只能

AirtestIDEPycharmAirtest

够在 上⾯跑吗?答案当然是否定的。 实际上也是基于 语法的测试框架,所以在 上⾯跑 脚本当然是可以

AirtestIDEAirtestpythonPycharmAirtest

的。但是对于 新⼿来说,有可能会遇到以下问题:

pycharm

环境中未安装 库,导致找不到模块

Airtest

未在脚本中连接设备

Airtest

的截图⽂件使⽤相对路径时,程序找不到

运⾏完脚本后不知道怎么看 的报告

pycharmairtest

1

环境中未安装Airtest库,导致找不到模块

之前在官⽹上看过我们本地环境跑Airtest脚本这个教程的童鞋都知道,使⽤本地 环境跑 或者 脚本之前,需要先安装上这

pythonAirtestpoco

俩个库(使⽤ 来安装)。在 上⾯跑 脚本也是如此,必须保证脚本运⾏环境下装有 库,

pip install airtestpip install pocouiPycharmAirtestAirtest

才可以跑 相关的脚本,否则就会出现很多童鞋都反馈过的问题--“找不到 Airtest 模块

Airtest

如何检查pycharm的运⾏环境中有没有安装Airtest库呢?

我们可以打开pycharm,依次选择左上⾓的 ,然后在弹出的设置框中选择

⽂件-->设置项⽬-->Project Interpreter

然后可以看到 当前使⽤的 环境以及该环境中装有的第三⽅库。可以看到⽰例图中的 环境是没有安装 库的,如果在

pycharmpythonpythonairtest

该环境下跑 的脚本,就会报 的错误。解决办法很简单,在 那⼀⾏的最右边,点击 ,输⼊ ,然后

airtestno module named airtestpackage+Airtest

再点击 安装即可。

install package

安装完成之后会提⽰安装成功:

虚拟环境问题

还有些童鞋反馈,他们在本地某个 环境上是装好了 库的,但是在 上新建了⼀个基于这个本地 的环境,却始终找不

pythonairtstpycharmpython

到这个 库。这个就涉及到了 的虚拟环境的问题。新建环境默认建的是虚拟环境,这个虚拟环境的意思基于本地某个

airtestpycharmpython

境,复制了⼀个不带任何第三⽅包的 ⼲净的Python虚拟环境 ,已经安装到本地 环境中的所有第三⽅包都不会复制过来。

Python

所以这就是为什么尽管童鞋们在本地环境上安装了 库,并在 根据这个本地 来新建环境的时候,并不会带上 库的原

airtestpycharmpythonairtest

因。如果不想使⽤虚拟环境,⽽是想要⽤本地的 环境来跑脚本,我们可以设置使⽤现有的 环境,这样就可以引⼊完整的带有安

pythonpython

装好的第三⽅库的环境了:

2

未在脚本中连接设备

中,我们可以在设备窗⼝中⼀键连接上我们的测试设备,然后再在脚本编辑窗⼝录制 脚本即可。

AirtestIDEAirtest

但是在 编写 脚本的时候,童鞋们往往忘记在初始化脚本的时候添加设备连接参数,导致运⾏ 脚本时出现各种设备未连

pycharmAirtestAirtest

接的报错,其中典型的报错有:

下⾯举⼏个添加设备参数的例⼦:

# ⽅法⼀:在auto_setup()接⼝添加设备

auto_setup(__file__,devices=["Android://127.0.0.1:5037/SJE5T17B17"])

# ⽅法⼆:⽤connect_device()⽅法连接设备

dev = connect_device("Android://127.0.0.1:5037/SJE5T17B17")

# ⽅法三:⽤init_device()⽅法连接设备

init_device(platform="Android",uuid="SJE5T17B17")

以上三种⽅法任选其⼀即可,另外这三个接⼝的详细使⽤⽅法,我们在往期推⽂ “” 中有详细介绍,有需要的童鞋可以认真看⼀下~

对于使⽤了备选连接参数才可以正常连接上的设备,⽐如模拟器、MIUI11等,我们也需要在连接设备的字符串后⾯加上这些连接参数

(以 接⼝为例):

auto_setup

auto_setup(__file__,devices=["Android://127.0.0.1:5037/79d03fa?cap_method=JAVACAP&&ori_method=ADBORI"])

3

airtest的截图⽂件使⽤相对路径时,程序找不到

AirtestIDE录制截图脚本的时候,截图⽂件都默认保存在当前脚本的所在路径下,且截图脚本上默认填写的路径也是相对路径:

touch(Template(r"", rgb=True, record_pos=(-0.383, 0.717), resolution=(1080, 1920)))

程序可以根据这个相对路径找到截图⽂件的原因在于,我们利⽤ 初始化脚本的时候,传⼊了⼀个 (参数值为

auto_setup(__file__)basedir

__file__,即当前脚本所在路径),程序会默认根据这个 去寻找脚本中存在的相对路径。所以当我们在 上新建项⽬,并把

basedirpycharm

上跑通的测试脚本复制粘贴过来时,这个 就变成了 新建项⽬的所在路径,程序会根据新建项⽬的所在⽬录去寻找

AirtestIDEbasedirpycharm

截图脚本中的相对路径。因此我们要把脚本中⽤到的截图⽂件,也复制到新建项⽬的所在⽬录下,这样才可以让程序根据截图脚本上的相对

路径正确找到我们的截图⽂件。如果我们没有⼀并把截图⽂件复制到新建项⽬的⽬录下,就直接运⾏脚本,会出

的报错:

tExistError: File not exist:

当然我们也可以选择把截图脚本上⾯的相对路径,改成绝对路径,这样程序也能够根据绝对路径找到我们的截图⽂件:

touch(Template(r"D:/test/", rgb=True, record_pos=(-0.383, 0.717), resolution=(1080, 1920)))

4

pycharm运⾏完脚本后不知道怎么看airtest的报告

之前我们在使⽤ 的时候,运⾏完脚本以后,我们就可以点击顶部菜单栏上的查看报告按钮,帮助我们快捷地⽣成并打开相应的html

AirtestIDE

报告。

但在 执⾏完脚本以后,就没有什么快捷按钮帮助我们⽣成报告了,所以需要⽣成报告的童鞋,务必记住在要在脚本中调⽤⽣成报告

pycharm

的接⼝来帮助我们⽣成报告,以 这个⽣成报告的接⼝为例,我们可以使⽤如下⽅式⽣成 的报告:

simple_report()airtest

# generate html report

from import simple_report

simple_report(__file__, logpath=True)

simple_report()simple_report()

的详细使⽤⽅法可以参考我们的往期推⽂ “” ,⾥⾯不仅详细介绍了 的使⽤⽅法,还给我们介绍了脚本初始化接

的详细⽤法。

auto_setup()

脚本报错导致最后的⽣成报告语句没有执⾏

有些童鞋把⽣成脚本的语句放在了脚本的最后⾯,希望跑完测试脚本以后,能够⽣成⼀个测试报告。但是有时候程序还没有运⾏到⽣成报告

的脚本时就报错了,导致程序终⽌运⾏,最终没有⽣成报告。其实我们是希望不论测试⽤例能不能执⾏通过,都可以给我们⼀个报告反馈,

所以我们可以使⽤ 语句,⽆论是否发⽣异常都将执⾏最后的代码:

try-finally

try:

touch(Template(r"", threshold=0.9, record_pos=(0.378, 0.098), resolution=(1080, 1920)))

finally:

# generate html report

simple_report(__file__, logpath=True)