AirtestProject AirtestIDE 有哪些好用但是非常隐蔽的小功能?

fishfish-yu · 2021年01月06日 · 最后由 fishfish-yu 回复于 2021年01月12日 · 4481 次阅读

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

前言

AirtestIDE 作为 Airtest 和 Poco 框架的配套编辑器,我们是非常建议新手同学使用的。使用它不仅可以帮助我们自动录制、回放脚本,还可以方便我们查看实时的控件树,检索设备画面上的 UI 控件等等。

当然,除了这些主要的特色功能之外,IDE 还有一些非常实用但有点点隐蔽的小功能,今天我们就一起来探讨下把~

1.显示实时坐标

很多同学在查看截图坐标的时候,都会额外利用一些画图工具,但实际上,IDE 就自带了查看坐标的功能。我们在顶部菜单栏中找到 选项--设置 ,可以看到这里有 2 个关于坐标的设置:

仅勾选 实时坐标显示 这个设置,点击 OK ,然后把鼠标移动到 IDE 的设备画面上,我们可以看到随着鼠标移动,会实时显示出来绝对坐标;如同时勾选 实时坐标显示相对坐标 这俩个设置,再点击 OK ,随着鼠标在设备画面上移动,我们可以看到实时显示出来的相对坐标:

另外还有一个非常好用的小技巧,开启坐标显示之后,把鼠标放到设备画面上,此时我们再单击右键,可以把对应坐标复制到剪切板上,然后我们再把剪切好的坐标粘贴(ctrl+v)到我们的脚本中即可,是不是非常方便呢!

2.查看应用包名

编写自动化脚本的时候,同学们经常要用到包名来启动或者停止应用,自己公司的应用还好说,问问程序就可以拿到包名了,但别的公司的应用包名怎么拿呢?

使用 AirtestIDE,拿包名也变得很简单。我们先连接上 1 台安卓设置,然后点击右上角的工具按钮,再点击 显示Android助手 选项,可以看到,弹出窗口的左下角,显示了设备当前所有应用的包名:

单击列表中的目标包名,然后使用 ctrl+c 剪切包名,接着就可以使用 ctrl+v 把我们的目标包名粘贴到我们的脚本当中了。

另外,我们还可以提前打开目标应用,然后点击 Android 助手中的 刷新 选项,就可以直接看到当前打开应用的包名了,接着再重复上述的复制粘贴操作即可:

注意,该助手 仅适用于安卓设备 ,想了解更多关于安卓助手的功能,可以查看我们之前的推文:IDE 这个隐藏的小助手,还没用过你就亏啦!

3.快速截图

Airtest 的辅助窗除了给我们提供了录制脚本的功能,还给我们提供了快速截图的按钮,点击该按钮后,我们即可通过简单的拖拽,在设备画面上快速完成截图操作:

并且,当我们把鼠标移动到截图上时,就可以看到截图所在的绝对路径;另外在脚本编辑窗单击右键唤出菜单,选择 图片/代码模式切换 ,就可以从图片模式切换到纯代码模式。

4.查看 Airtest 核心 API 的参数

同样还是在 Airtest 辅助窗内,可以看到给我们提供了一些核心 API 的快捷键,把鼠标停留在某一个 API 上,我们可以看到对应 API 的参数详情:

这样即使我们不翻看详细的 API 文档,也可以了解这些核心 API 的详细参数了。

5.快速生成节点定位脚本

使用 poco 辅助窗的录制功能,可以帮助我们自动生成一些 poco 脚本;除此之外,我们还可以通过双击控件树上的某个节点,来快速生成该节点的定位脚本,之后我们再补充点击或者其它等操作即可:

在我们自己编写 poco 的自动化脚本时,使用此方法可以节省我们自己思考和编写定位脚本的时间,非常方便~

6.获取设备连接的字符串

使用命令行运行脚本的时候,经常需要我们自己敲一大段的设备连接字符串,一不小心还非常容易敲错,如果使用 IDE 的话,这个问题就非常容易解决了。

我们只需要用 IDE 连接上待测设备,然后随便开个脚本点击运行,1、2 秒后终止运行,此时我们拉到 log 查看窗的最上方,就可以看到完整的运行命令。该命令里面就含有设备连接字符串,我们直接复制该字符串到命令行使用即可:

同理,此方法不仅适用于安卓设备,还适用于查看 Windows 窗口句柄,使用 IDE,同学们就不用另外软件来查看窗口句柄啦:


Airtest 官网:airtest.netease.com/
Airtest 教程官网:airtest.doc.io.netease.com/
搭建企业私有云服务:airlab.163.com/b2b

官方答疑 Q 群:654700783

呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~

共收到 2 条回复 时间 点赞

有工具能录出类似下面的代码,Airtest 不考虑借鉴下吗?🤔

describe('Test 1', () => {
    let browser, page;
    beforeAll(async () => {
        browser = await puppeteer.launch({ headless: false, defaultViewport: null, args: ['--start-maximized'] ,ignoreDefaultArgs: ['--enable-automation']});
        page = await browser.newPage();
        await page.goto('https://kaifa.baidu.com/home');
    });
    it('Test 1 - 1', async () => {
        await page.click('.ant-input');
        await page.type('.ant-input', 'py');
        await page.keyboard.press('Backspace');
        await page.type('.ant-input', 'uppeteer');
    }, 60000);
});
MarvinWu 回复

🙆 可以先研究下~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册