绝了!这个支持 App 的 AI 自动化工具 auto-wing,你怎能错过!
GitHub: https://github.com/SeldomQA/auto-wing
我们继续探索auto-wing在自动化测试领域的应用,在
0.5.0
版本中,进一步支持App的AI自动化测试。
特性
⭐ 集成 playwright
、 selenium
、 appium
,支持 WebUI
和 AppUI
的 AI
操作。
⭐ 支持多模型:openai
、 deepseek
、 qwen
和 doubao
。
⭐ 支持多种操作:ai_action
、 ai_query
、 ai_assert
。
⭐ 无痛的集成到现有自动化项目( pytest
、 unittest
)中。
App环境准备
- • 安装node.js
https://nodejs.org/en/
> node --version
v18.20.5
- • 安装appium
`> npm i --location=global appium # appium 2.x`
- • 安装依赖库
> appium driver install uiautomator2
> appium driver install espresso
> ...
- • 启动appium
> appium server --address '127.0.0.1' -p 4723
[Appium] Welcome to Appium v2.2.2
[Appium] Non-default server args:
[Appium] {
[Appium] address: '127.0.0.1'
[Appium] }
...
- • 移动设备
准备一台设备(Android/iOS手机)通过USB数据线连接电脑。通过以下工具确认手机与电脑是否连接。
> adb devices
List of devices attached
UMXDU000000000000 device
- • 安装autowing
`pip install autowing`
支持App测试
在 0.5.0
版本中,集成了appium,进一步实现了对App自动化的支持。我们知道App测试相比较Web来说,面临更多挑战:原生组件与WebView,以及flutter之间的切换,Android与iOS双平台的支持,好在,我们开始了这个领域的AI操作探索。
App测试示例
import time
import pytest
from appium import webdriver
from appium.options.android import UiAutomator2Options
from dotenv import load_dotenv
from autowing.appium.fixture import create_fixture
@pytest.fixture(scope="function")
def driver():
"""
Create and configure Edge WebDriver instance.
"""
# loading .env file
load_dotenv()
capabilities = {
'deviceName': 'ELS_AN00',
'automationName': 'UiAutomator2',
'platformName': 'Android',
'appPackage': 'com.microsoft.bing',
'appActivity': 'com.microsoft.sapphire.app.main.MainSapphireActivity',
'noReset': True,
}
options = UiAutomator2Options().load_capabilities(capabilities)
driver = webdriver.Remote(command_executor="http://127.0.0.1:4723", options=options)
yield driver
driver.quit()
@pytest.fixture
def ai(driver):
"""
Create an AI-powered Selenium fixture.
"""
ai_fixture = create_fixture()
return ai_fixture(driver)
def test_bing_search(ai, driver):
"""
test bing App search
"""
ai.ai_action('点击搜索框,然后输入"auto-wing"关键字,然后回车搜索')
time.sleep(3)
items = ai.ai_query('string[], 搜索结果列表中包含"auto-wing"相关的标题')
assert len(items) > 1
ai.ai_assert('检查搜索结果列表第一条标题是否包含"auto-wing"字符串')
if __name__ == '__main__':
pytest.main(["test_appium_pytest.py", "-s"])
运行日志
> python test_appium_pytest.py
================================================= test session starts =================================================
platform win32 -- Python 3.12.3, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\github\seldomQA\auto-wing
configfile: pyproject.toml
plugins: anyio-4.8.0, base-url-2.1.0, playwright-0.6.2
collected 1 item
test_appium_pytest.py 2025-02-20 20:58:52.730 | INFO | autowing.core.llm.factory:create:41 - 🤖 AUTOWING_MODEL_PROVIDER=qwen
2025-02-20 20:58:54.573 | INFO | autowing.appium.fixture:ai_action:76 - 🪽 AI Action: 点击搜索框,然后输入"auto-wing"关键字,然后回车搜索
2025-02-20 20:59:21.582 | INFO | autowing.appium.actions:tap:27 - 👆 top x=494,y=1541.
2025-02-20 20:59:23.021 | INFO | autowing.appium.fixture:ai_action:124 - ⌨️ fill text: auto-wing.
2025-02-20 20:59:24.091 | INFO | autowing.appium.fixture:ai_action:127 - 🔍 keyboard search key.
2025-02-20 20:59:28.070 | INFO | autowing.appium.fixture:ai_query:146 - 🪽 AI Query: string[], 搜索结果列表中包含"auto-wing"相关的标题
2025-02-20 20:59:48.968 | DEBUG | autowing.appium.fixture:ai_query:203 - 📄 Query: ['auto-wing将AI应用于自动化项目 - 虫师 - 博客园', 'GitHub - SeldomQA/auto-wing: auto-wing is a tool that uses LLM to ...', 'auto-wing将AI应用于自动化项目 - CSDN博客']
2025-02-20 20:59:48.968 | INFO | autowing.appium.fixture:ai_assert:244 - 🪽 AI Assert: 检查搜索结果列表第一条标题是否包含"auto-wing"字符串.
遗留问题
-
目前只在
Android
端测试通过,iOS
端待支持。 -
LLM模型调用慢的问题,后续参考midsence.js做法,提供缓存。
-
还需要更多操作支持,比如滑动识别所有元素,滑动查找元素等。
关于AI在自动化测试领域的应用,欢迎参与项目功能讨论和测试。