auto-wing将AI应用于自动化项目
GitHub: https://github.com/SeldomQA/auto-wing
背景:我们之前介绍过 midsence.js AI自动化测试辅助工具,midsence.js的思路我个人是比较认可的。然而,因为它是基于TS语言实现的,更多的软件测试工程师使用Python语言!我来用Python实现一个满足更多测试工程师的需求。
auto-wing的定位
既然借鉴了midsence.js的思路,为什么不叫midsencepy?因为我希望创建的AI自动化辅助工具和midsence.js有一些差异。
- 他应该可以方便的应用到现有的自动化项目中。毕竟我们已经编写了大量的自动化项目,可以方便的接入AI是最好的。
- 他应该支持更多国内的LLM。国内的LLM并不弱了好吧!这两天不是正在被
deepseek-v3刷屏。方便又便宜对吧!? - 他应该支持
playwright和selenium;大部分工具都是基于playwright, 然而selenium似乎被抛弃了,我来给selenium上个呼吸机。
很高兴,我趁着大过年在家撸出来了,我这么为测试工程师群体着想,GitHub加个不过分吧!
为什么叫 auto-wing? 那当然是给你的自动化测试插上AI的翅膀 ,直接原地起飞,哈哈!
特性
支持多种操作:ai_action、ai_query、ai_assert。
支持多模型:openai、qwen 和 deepseek。
支持 playwright、selenium。
方便的和现有自动化项目(pytest、unittest)集成。
安装
pip install autowing
设置环境变量
方法一
申请LLM需要的key,在项目的根目录下创建.env文件。推荐deepseek,一是便宜又强大(没错,我就是在蹭蹭DeepSeek)。
- DeepSeek: https://platform.deepseek.com/
#.env
AUTOWING_MODEL_PROVIDER=deepseek
DEEPSEEK_API_KEY=sk-abdefghijklmnopqrstwvwxyz0123456789
方法二
如果不想使用python-dotenv配置环境变量,可以直接配置环境变量。
export AUTOWING_MODEL_PROVIDER=deepseek
export DEEPSEEK_API_KEY=sk-abdefghijklmnopqrstwvwxyz0123456789
使用示例
注: pytest 、unittest 和 playwright、selenium可以两两任意组合。
- pytest + playwright 示例
"""
pytest example for Playwright with AI automation.
"""
import pytest
from playwright.sync_api import Page, sync_playwright
from autowing.playwright.fixture import create_fixture
from dotenv import load_dotenv
@pytest.fixture(scope="session")
def page():
"""
playwright fixture
"""
# loading .env file
load_dotenv()
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
yield page
context.close()
browser.close()
@pytest.fixture
def ai(page):
"""
ai fixture
"""
ai_fixture = create_fixture()
return ai_fixture(page)
def test_bing_search(page: Page, ai):
"""
Test Bing search functionality using AI-driven automation.
This test demonstrates:
1. Navigating to Bing
2. Performing a search
3. Verifying search results
"""
page.goto("https://cn.bing.com")
ai.ai_action('搜索输入框输入"playwright"关键字,并回车')
page.wait_for_timeout(3000)
items = ai.ai_query('string[], 搜索结果列表中包含"playwright"相关的标题')
print("query", items)
assert len(items) > 1
print("assert")
assert ai.ai_assert('检查搜索结果列表第一条标题是否包含"playwright"字符串')
- unittest + selenium 示例
"""
Unittest example for Selenium with AI automation.
"""
import unittest
import time
from selenium import webdriver
from autowing.selenium.fixture import create_fixture
from dotenv import load_dotenv
class TestBingSearch(unittest.TestCase):
@classmethod
def setUpClass(cls):
# load .env file
load_dotenv()
# Initialize Edge WebDriver
cls.driver = webdriver.Edge()
# Create AI fixture
ai_fixture = create_fixture()
cls.ai = ai_fixture(cls.driver)
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_01_bing_search(self):
"""
Test Bing search functionality using AI-driven automation.
This test demonstrates:
1. Navigating to Bing
2. Performing a search
3. Verifying search results
"""
self.driver.get("https://cn.bing.com")
self.ai.ai_action('搜索输入框输入"playwright"关键字,并回车')
time.sleep(3)
items = self.ai.ai_query('string[], 搜索结果列表中包含"playwright"相关的标题')
print("query", items)
self.assertGreater(len(items), 1)
self.assertTrue(
self.ai.ai_assert('检查搜索结果列表第一条标题是否包含"playwright"字符串')
)
if __name__ == '__main__':
unittest.main()
Q/A
- App是否支持?有计划支持。
auto-wing刚发布,肯定还有不少坑,加了我微信的已经推动项目更新了,而你只能发个评论默默等回复。auto-wing稳定之后,seldom和lounger项目也会同步集成。- 最后,祝福大家:新年快乐~!。
auto-wing将AI应用于自动化项目的更多相关文章
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 3. ...
- Gulp.js - 简单、直观的自动化项目构建工具
Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...
- Selenium Web 自动化 - 项目持续集成(进阶)
Selenium Web 自动化 - 项目持续集成(进阶) 2017-03-09 目录 1 背景及目标2 环境配置 2.1 SVN的安装及使用 2.2 新建Jenkins任务3 过程分析 1 背景 ...
- Selenium Web 自动化 - 项目持续集成
Selenium Web 自动化 - 项目持续集成 2017-02-13 目录 1环境准备 1.1 安装git 1.2 安装jenkins 1.3 安装jenkins插件 1.4 jekins ...
- 重磅推出:AutoProject Studio 自动化项目生成器
AutoProject Studio 自动化项目生成器 核心架构图 AutoProject Studio 自动化项目生成器是一款基于C#.Net Framework 4.0为平台自主研发.专为软件设计 ...
- AutoProject Studio 自动化项目生成器 下载地址
一.ZCN.NET 自动化项目生成器 下载专区 [如果下载链接不可用,请直接联系作者,QQ:3080400049] 1.1.ZCN.NET 自动化项目生成器 安装程序 V2016Beta1 ...
- Selenium Web 自动化 - 项目实战环境准备
Selenium Web 自动化 - 项目实战环境准备 2016-08-29 目录 1 部署TestNG 1.1 安装TestNG 1.2 添加TestNG类库2 部署Maven 2.1 mav ...
- Selenium Web 自动化 - 项目实战(一)
Selenium Web 自动化 - 测试框架(一) 2016-08-05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件4 Eclipse编码修改5 编写代 ...
- Selenium Web 自动化 - 项目实战(二)
Selenium Web 自动化 - 项目实战(二) 2016-08-08 什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动.数据驱动包含了数据,他就是测试数据,在自动化领域里 ...
- [转]如何使用MFC和类型库创建自动化项目
本文转自:http://www.cnblogs.com/zhoug2020/archive/2012/04/01/2429064.html 摘要 本文详细介绍了如何自动化像Microsoft Offi ...
随机推荐
- Docker Registry之删除镜像、垃圾回收
Docker仓库在2.1版本中支持了删除镜像的API,但这个删除操作只会删除镜像元数据,不会删除层数据.在2.4版本中对这一问题进行了解决,增加了一个垃圾回收命令,删除未被引用的层数据.本文对这一特性 ...
- (Python基础教程之十一)Python找到最大的N个(前N个)或最小的N个项目
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
- ZCMU-1156
思路: 要改变的是一个范围的情况,所以正常情况下会超时. 查阅后知道应该用一个叫做树状数组的结构. 查阅和树状数组的后续情况 这个也不错 注意: 我没怎么看懂,可能没太仔细看. 树状数组当中存在的是前 ...
- datagridview点击列头对当前列进行排序的功能无效
DataGridView 的默认行为是支持通过单击列头对列进行排序,但在以下情况下可能会取消该功能或无法使用: 1. 绑定的数据源不支持排序 如果 DataGridView 的数据源是绑定到一个不支持 ...
- 【Amadeus原创】docker中修改wordpress上传文件大小
1,进入docker 2,cp php.ini 3, cd到目录 [root@3 ~]# docker exec -it wordpress /bin/bash root@1d8a4fbdaa6b ...
- COS 音视频实践|给你的视频加把锁
导语 为了保障视频内容安全,防止视频被非法下载和传播,对象存储(Cloud Object Storage,COS)数据处理基于数据万象 CI 提供了 HLS 视频加密的功能,拥有相比于私有读文件更高的 ...
- django静态文件、form表单和request对象
目录 一.静态文件 1.静态文件概念 2.资源访问 3.静态文件资源访问 二.静态文件相关配置 1.接口前缀 2.接口前缀动态匹配 三.form表单 action属性 method属性 四.reque ...
- 【Vue】vue基础学习笔记
目录 基础 差值语法 模板语法 数据绑定 el与data的两种写法 el与data写法1 el写法2:挂载 data写法2:函数式写法 绑定样式 绑定class样式 绑定style样式 条件渲染 基础 ...
- 【Java高级编程】IO流学习笔记
目录 IO流 File类 文件/文件夹基础操作 创建文件的完整步骤 IO流 - 节点流 读入文件一个字节(一个字节) [FileInputStream]字节数组的方式读取(读取全部内容) [FileI ...
- Netty有关
https://www.baeldung.com/tag/netty/ https://github.com/eugenp/tutorials https://stackoverflow.com/qu ...