AirtestIDE新手必看:5分钟搞定Web自动化测试(附Chrome配置秘籍)
AirtestIDE 实战指南:从零构建你的首个Web自动化测试脚本
如果你刚接触自动化测试,面对一堆陌生的工具和概念感到无从下手,那么这篇文章就是为你准备的。AirtestIDE 以其直观的图像识别和低代码特性,成为了许多测试新手快速上手的首选工具。今天,我们不谈复杂的理论,直接从一次真实的Web自动化测试实战出发,手把手带你配置环境、编写脚本、解决常见问题,并最终生成一份清晰的可视化报告。整个过程,我们力求在5分钟内让你看到第一个脚本成功运行的效果。
这篇文章面向的是希望快速入门Web自动化测试的工程师、测试人员以及对自动化感兴趣的技术爱好者。我们将聚焦于 Chrome浏览器 的自动化,因为它是目前最主流的浏览器,也是AirtestIDE对Web自动化支持最完善的环境。你将学到的不只是点击和输入,更包括如何高效地利用IDE的辅助功能、规避新手常踩的坑,以及让脚本更健壮的技巧。
1. 环境搭建与核心配置:避开第一个“拦路虎”
万事开头难,对于AirtestIDE的Web自动化来说,这个“难”往往就卡在环境配置上。很多新手满怀热情地打开软件,却在第一步“启动浏览器”时就遇到了 unknown error: cannot find Chrome binary 这样的错误。别担心,这几乎是所有人的必经之路,解决起来并不复杂。
1.1 获取与启动AirtestIDE
AirtestIDE是一款绿色软件,无需安装,解压即用。你可以从其官方网站下载最新的Windows版本。解压后,直接运行目录下的 AirtestIDE.exe 即可。
首次启动时,你可能会看到一个清爽但略显复杂的界面。别被吓到,我们目前只关注几个核心区域:
- 设备窗口:通常位于右侧,用于连接和显示待测设备(对于Web测试,这里将显示浏览器窗口)。
- 脚本编辑器:中间的主区域,用于编写和查看Python脚本。
- 辅助窗口面板:位于左侧,通过菜单栏的“窗口”选项可以打开,这是我们进行Web自动化的“武器库”。
1.2 关键一步:启用Selenium窗口并配置Chrome路径
这是Web自动化配置的核心,两步缺一不可。
第一步:启用Selenium窗口 在IDE顶部菜单栏,依次点击 窗口 -> Selenium Window。勾选后,左侧辅助窗口区域会出现一个新的标签页,里面包含了 初始化、touch、text、assert 等针对Web操作的快捷按钮。这个窗口是我们后续录制和插入代码片段的得力助手。
第二步:配置Chrome浏览器路径(解决90%的启动问题)
- 再次点击顶部菜单栏的 选项 -> 设置。
- 在弹出的设置窗口中,找到左侧的 Selenium 分类。
- 在右侧找到 Chrome Path 的输入框。这里需要填入你电脑上
chrome.exe的完整路径,而不是chromedriver.exe的路径。
如何找到这个路径?一个简单的方法是:
- 在Windows搜索栏输入
chrome,右键点击Chrome浏览器图标,选择“打开文件位置”。 - 在打开的文件夹中,再次右键点击Chrome快捷方式,选择“属性”。
- 在“目标”一栏,你就能看到类似
"C:\Program Files\Google\Chrome\Application\chrome.exe"的路径,复制它(注意包含引号)粘贴到AirtestIDE的设置中即可。
注意:如果你使用的是便携版Chrome或安装在其他非标准目录,务必手动找到准确的
chrome.exe路径。路径错误是导致浏览器无法启动的最常见原因。
为了更清晰地展示不同操作系统下的常见路径,我整理了一个表格:
| 操作系统 | Chrome典型安装路径 (仅供参考) | 查找方法 |
|---|---|---|
| Windows | C:\Program Files\Google\Chrome\Application\chrome.exe | 桌面图标右键 -> 属性 -> 目标 |
| Windows (64位) | C:\Program Files (x86)\Google\Chrome\Application\chrome.exe | 同上 |
| macOS | /Applications/Google Chrome.app/Contents/MacOS/Google Chrome | 访达 -> 应用程序 -> 右键Chrome -> 显示包内容 |
| Linux | /usr/bin/google-chrome 或 /opt/google/chrome/chrome | 终端执行 which google-chrome |
配置完成后,点击“确定”保存。至此,最关键的准备工作就完成了。
2. 创建你的第一个Web自动化项目
环境配置妥当,让我们立刻开始创建第一个脚本,感受一下AirtestIDE的便捷。
2.1 新建项目与初始化驱动
在AirtestIDE中,点击 文件 -> 新建脚本,选择 .air Airtest项目。给项目起个名字,比如 first_web_test。系统会自动生成一个 .air 文件夹,里面包含一个同名的 .py 脚本文件。
现在,让我们打开浏览器。在左侧的 Selenium Window 中,点击那个地球图标(初始化 按钮)。如果你是第一次点击,IDE可能会弹出一个黄色提示框,询问是否插入初始化代码,选择 Yes。
你的脚本编辑器中会自动插入如下代码:
# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
# 创建WebChrome驱动实例
driver = WebChrome()
driver.implicitly_wait(20)
这段代码做了三件事:
- 导入了必要的库,包括标准的
selenium.webdriver和Airtest封装的airtest_selenium.proxy.WebChrome。 - 实例化了一个
driver对象。请注意,这里使用的是WebChrome(),而不是Selenium原生的webdriver.Chrome()。WebChrome是Airtest对Selenium的封装,它额外集成了图像识别等Airtest特性。 - 设置了隐式等待时间为20秒,这意味着在查找元素时,如果元素没有立即出现,driver会最多等待20秒再去抛出异常。
此时,你应该能看到一个全新的Chrome浏览器窗口被打开。如果没打开,请返回检查第一步的Chrome路径配置。
2.2 录制你的第一个操作:访问百度并搜索
AirtestIDE强大的录制功能可以极大降低脚本编写门槛。我们以“在百度搜索Airtest”为例。
- 打开网页:在Selenium Window中点击
start_web按钮,在弹出的输入框里填入https://www.baidu.com,然后点击确定。你会发现脚本中自动添加了一行:driver.get("https://www.baidu.com")。同时,浏览器会导航到百度首页。 - 录制点击与输入:
- 点击Selenium Window中的红色圆形 录制 按钮,开始录制。
- 在浏览器中,用鼠标点击百度首页的搜索框。
- 在搜索框中输入 “Airtest”。
- 按下键盘上的
Enter键进行搜索。
- 停止录制:点击Selenium Window中的 停止 按钮。
神奇的事情发生了!IDE自动在你的脚本中生成了一系列代码,可能类似于下面这样:
# 上述初始化代码...
driver.get("https://www.baidu.com")
# 以下是录制生成的代码
driver.find_element_by_id("kw").click()
driver.find_element_by_id("kw").send_keys("Airtest")
driver.find_element_by_id("kw").send_keys(Keys.ENTER)
你可以直接点击编辑器上方的 运行 按钮(绿色的三角形),脚本便会自动回放你刚才录制的所有操作。这就是“所见即所得”的自动化脚本开发体验。
3. 超越录制:手动编写与增强脚本
录制功能虽好,但真实的测试场景往往更复杂。我们需要掌握手动编写和增强脚本的能力。Airtest-Selenium 几乎支持所有原生的Selenium WebDriver API,同时也提供了一些独有的增强功能。
3.1 核心元素定位与操作
Selenium提供了多种元素定位方式,在AirtestIDE中,你可以使用 元素检查器 来辅助定位。在Selenium Window中,点击放大镜图标(元素检查),然后将鼠标移动到浏览器页面的元素上,页面会高亮显示该元素,同时在IDE中会显示该元素的多种定位信息(如ID、XPath、CSS Selector等)。单击高亮元素,对应的定位代码(默认是XPath)就会自动插入到脚本编辑器中。
下表对比了常用的几种定位策略及其适用场景:
| 定位方式 | 示例代码 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| ID | driver.find_element_by_id(“kw”) | 速度快,唯一性好 | 依赖开发赋予稳定ID | 首选,当元素有唯一ID时 |
| Name | driver.find_element_by_name(“wd”) | 速度较快 | 可能不唯一 | 表单元素常用 |
| XPath | driver.find_element_by_xpath(‘//input[@id=“kw”]’) | 非常灵活,可定位任何元素 | 速度相对慢,易受页面结构变化影响 | 当无ID/Name,或需定位复杂关系时 |
| CSS Selector | driver.find_element_by_css_selector(‘#kw’) | 速度通常比XPath快,语法简洁 | 对部分复杂定位支持不如XPath | 推荐,性能与灵活性平衡 |
| Link Text | driver.find_element_by_link_text(“新闻”) | 专用于链接文本,直观 | 只能用于<a>标签 | 定位明确的文本链接 |
获取到元素对象后,你可以对其进行一系列操作:
- 点击:
.click() - 输入文本:
.send_keys(“text”) - 清空输入框:
.clear() - 获取文本:
.text - 获取属性:
.get_attribute(“href”)
3.2 Airtest-Selenium 的独有优势:图像识别
这是Airtest的看家本领。当页面元素无法通过常规属性定位(例如一个自定义绘制的图形按钮),或者你想进行更“视觉化”的断言时,图像识别就派上用场了。
在Selenium Window中,你会看到 airtest_touch 和 assert_template 两个按钮。它们的使用方法类似:
- 点击
airtest_touch按钮。 - 鼠标会变成十字准星,在浏览器窗口上拖拽出一个矩形框,框住你想要点击的目标(比如百度首页的“百度一下”按钮)。
- 松开鼠标,IDE会自动截取该区域的图片,并生成一行代码:
driver.airtest_touch(Template(r”tpl123456.png”, record_pos=(x, y), resolution=(width, height))) - 运行脚本时,Airtest会在当前页面中寻找与这张截图匹配的区域并进行点击。
图像识别断言 assert_template 的用法同理,用于断言某个图片元素出现在页面上。
重要提示:图像识别受屏幕分辨率、缩放比例、页面动态内容影响较大。在实际项目中,建议将图像识别作为辅助或兜底方案,优先使用基于元素属性的定位方式,以保证脚本的稳定性和执行速度。
3.3 处理多窗口、iframe与等待
多窗口/标签页切换:Airtest-Selenium 封装了更易用的方法。
# 点击某个链接,在新标签页打开
driver.find_element_by_partial_link_text(“新窗口打开”).click()
# 切换到最新的标签页
driver.switch_to_new_tab()
# 操作新页面...
# ...
# 切换回之前的标签页
driver.switch_to_previous_tab()
# 关闭当前标签页并切回前一个
driver.close()
driver.switch_to_previous_tab()
处理iframe:如果元素位于iframe内部,必须先切换到对应的iframe框架。
# 通过ID或Name切换
driver.switch_to.frame(“iframe_id_or_name”)
# 通过索引切换(从0开始)
driver.switch_to.frame(0)
# 通过WebElement切换
iframe = driver.find_element_by_tag_name(“iframe”)
driver.switch_to.frame(iframe)
# 操作iframe内的元素...
# ...
# 切换回主文档
driver.switch_to.default_content()
智能等待:避免使用固定的 sleep,而是使用显式等待或隐式等待。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 显式等待:等待某个元素可点击,最多等10秒
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, “submit_btn”))
)
element.click()
# 隐式等待(已在初始化时设置):在查找任何元素时,如果未立即找到,会轮询等待一段时间
# driver.implicitly_wait(10)
4. 脚本调试、报告生成与进阶技巧
脚本写好了,如何验证它是否可靠?出了问题如何排查?测试结果如何呈现?这是自动化测试闭环的关键。
4.1 运行调试与日志查看
在AirtestIDE中运行脚本非常简单,点击工具栏的绿色运行按钮即可。运行过程中,你可以:
- 实时观察:在右侧的设备窗口,你会看到浏览器在自动执行你的操作。
- 查看日志:下方的“Log查看窗”会输出详细的执行日志,包括每一步的操作、成功或失败的信息。如果脚本出错,这里会打印出详细的错误栈信息,是调试的第一手资料。
- 断点调试:虽然AirtestIDE对Python原生调试支持有限,但你可以在关键步骤后插入
sleep暂停,或者使用print语句输出变量状态来辅助调试。
一个常见的调试技巧是,在可能出错的操作前后,使用 snapshot 截屏。
driver.get(“https://example.com”)
driver.snapshot(“首页截图”) # 保存一张名为“首页截图”的图片到日志目录
try:
driver.find_element_by_id(“non_exist”).click()
except Exception as e:
print(f“定位元素失败: {e}”)
driver.snapshot(“失败时截图”) # 记录失败时的页面状态
4.2 生成与解读HTML测试报告
脚本运行结束后(无论成功失败),点击工具栏上的 查看报告 按钮(纸飞机图标),AirtestIDE会自动在浏览器中打开一份精美的HTML测试报告。
这份报告是Airtest的一大亮点,它清晰地展示了:
- 测试步骤列表:按时间顺序列出每一个操作。
- 操作截图:每个关键步骤(如点击、输入、断言)都附有当时的屏幕截图,一目了然。
- 成功/失败状态:用绿色对勾和红色叉号明确标识。
- 日志详情:点击每一步可以展开查看详细的日志信息。
报告不仅用于自己复盘,更是向团队展示测试结果、证明测试有效性的有力工具。如果测试失败,通过报告中的截图和日志,可以快速定位是页面元素变了、网络慢了,还是脚本逻辑有问题。
4.3 常见问题排查清单(避坑指南)
根据大量实践,我总结了一份新手高频问题清单,希望能帮你节省大量搜索时间:
-
浏览器启动失败,提示
cannot find Chrome binary- 原因:
Chrome Path配置错误或Chrome未安装。 - 解决:严格按照1.2节的方法,在IDE设置中配置正确的
chrome.exe路径。
- 原因:
-
浏览器启动后秒退,或提示
chromedriver版本不匹配- 原因:AirtestIDE内置的
chromedriver版本与你本地安装的Chrome浏览器版本不兼容。 - 解决:去 ChromeDriver官网 下载与你的Chrome版本号匹配的
chromedriver.exe,将其放置到AirtestIDE安装目录下的airtest\selenium\webdriver文件夹中(覆盖原有文件)。查看Chrome版本:在浏览器地址栏输入chrome://version/。
- 原因:AirtestIDE内置的
-
元素定位失败,报
NoSuchElementException- 原因:页面尚未加载完成,或元素定位符已失效。
- 解决:
- 增加等待:在操作前使用
WebDriverWait进行显式等待。 - 检查定位符:使用浏览器的开发者工具(F12)重新检查元素的属性(ID、Class等)是否变化。警惕动态生成的ID。
- 尝试其他定位方式:如果XPath不稳定,尝试用CSS Selector或ID。
- 增加等待:在操作前使用
-
图像识别失败,报
Target not found on screen- 原因:页面内容发生变化、浏览器窗口大小/缩放比例改变、截图区域不具唯一性。
- 解决:
- 确保运行脚本时的浏览器窗口状态(大小、位置)与录制时基本一致。
- 尝试提高截图区域的辨识度,避免截取大片纯色或重复纹理区域。
- 适当调整
Template的threshold(匹配阈值,默认0.7)参数,降低匹配精度要求(但可能增加误匹配风险)。
-
脚本在IDE中运行正常,但用命令行
python xxx.py运行失败- 原因:缺少必要的Python库,或环境变量问题。
- 解决:在项目目录下,使用pip安装依赖:
pip install airtest selenium airtest-selenium。确保你的命令行Python环境与IDE使用的Python环境一致(AirtestIDE自带Python环境)。
掌握了这些核心配置、脚本编写、调试和排错技巧后,你已经具备了使用AirtestIDE开展基础Web自动化测试的能力。真正的熟练来自于实践,建议你从公司内部一个简单的系统开始,尝试将一次重复的手工测试任务自动化,在实践中不断遇到和解决问题,你的技能树便会飞速成长。
更多推荐



所有评论(0)