GitHub: https://github.com/SeldomQA/auto-wing

背景:我们之前介绍过 midsence.js AI自动化测试辅助工具,midsence.js的思路我个人是比较认可的。然而,因为它是基于TS语言实现的,更多的软件测试工程师使用Python语言!我来用Python实现一个满足更多测试工程师的需求。

auto-wing的定位

既然借鉴了midsence.js的思路,为什么不叫midsencepy?因为我希望创建的AI自动化辅助工具和midsence.js有一些差异。

  1. 他应该可以方便的应用到现有的自动化项目中。毕竟我们已经编写了大量的自动化项目,可以方便的接入AI是最好的。
  2. 他应该支持更多国内的LLM。国内的LLM并不弱了好吧!这两天不是正在被deepseek-v3刷屏。方便又便宜对吧!?
  3. 他应该支持playwrightselenium;大部分工具都是基于playwright, 然而selenium似乎被抛弃了,我来给selenium上个呼吸机。

很高兴,我趁着大过年在家撸出来了,我这么为测试工程师群体着想,GitHub加个不过分吧!

为什么叫 auto-wing? 那当然是给你的自动化测试插上AI的翅膀 ,直接原地起飞,哈哈!

特性

支持多种操作:ai_actionai_queryai_assert

支持多模型:openaiqwendeepseek

支持 playwrightselenium

方便的和现有自动化项目(pytestunittest)集成。

安装

pip install autowing

设置环境变量

方法一

申请LLM需要的key,在项目的根目录下创建.env文件。推荐deepseek,一是便宜又强大(没错,我就是在蹭蹭DeepSeek)。

#.env
AUTOWING_MODEL_PROVIDER=deepseek
DEEPSEEK_API_KEY=sk-abdefghijklmnopqrstwvwxyz0123456789

方法二

如果不想使用python-dotenv配置环境变量,可以直接配置环境变量。

export AUTOWING_MODEL_PROVIDER=deepseek
export DEEPSEEK_API_KEY=sk-abdefghijklmnopqrstwvwxyz0123456789

使用示例

注: pytestunittestplaywrightselenium可以两两任意组合。

  • 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

  1. App是否支持?有计划支持。
  2. auto-wing刚发布,肯定还有不少坑,加了我微信的已经推动项目更新了,而你只能发个评论默默等回复。
  3. auto-wing稳定之后,seldomlounger项目也会同步集成。
  4. 最后,祝福大家:新年快乐~!。

auto-wing将AI应用于自动化项目的更多相关文章

  1. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解  3.1 解析新增页面目录  3.2 解析新增测试用例目录  3. ...

  2. Gulp.js - 简单、直观的自动化项目构建工具

    Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...

  3. Selenium Web 自动化 - 项目持续集成(进阶)

    Selenium Web 自动化 - 项目持续集成(进阶) 2017-03-09 目录 1 背景及目标2 环境配置  2.1 SVN的安装及使用  2.2 新建Jenkins任务3 过程分析 1 背景 ...

  4. Selenium Web 自动化 - 项目持续集成

    Selenium Web 自动化 - 项目持续集成 2017-02-13 目录 1环境准备  1.1 安装git  1.2 安装jenkins  1.3 安装jenkins插件  1.4 jekins ...

  5. 重磅推出:AutoProject Studio 自动化项目生成器

    AutoProject Studio 自动化项目生成器 核心架构图 AutoProject Studio 自动化项目生成器是一款基于C#.Net Framework 4.0为平台自主研发.专为软件设计 ...

  6. AutoProject Studio 自动化项目生成器 下载地址

    一.ZCN.NET 自动化项目生成器 下载专区 [如果下载链接不可用,请直接联系作者,QQ:3080400049] 1.1.ZCN.NET 自动化项目生成器 安装程序 V2016Beta1       ...

  7. Selenium Web 自动化 - 项目实战环境准备

    Selenium Web 自动化 - 项目实战环境准备 2016-08-29 目录 1 部署TestNG  1.1 安装TestNG  1.2 添加TestNG类库2 部署Maven  2.1 mav ...

  8. Selenium Web 自动化 - 项目实战(一)

    Selenium Web 自动化 - 测试框架(一) 2016-08-05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件4 Eclipse编码修改5 编写代 ...

  9. Selenium Web 自动化 - 项目实战(二)

    Selenium Web 自动化 - 项目实战(二) 2016-08-08 什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动.数据驱动包含了数据,他就是测试数据,在自动化领域里 ...

  10. [转]如何使用MFC和类型库创建自动化项目

    本文转自:http://www.cnblogs.com/zhoug2020/archive/2012/04/01/2429064.html 摘要 本文详细介绍了如何自动化像Microsoft Offi ...

随机推荐

  1. 使用<a-select>时,placeholder不起作用

    当绑定v-model的值之后,placeholder设置的值不起作用,此时需要把v-model绑定的值设置为undefined就可以了

  2. Git中使用tag

    什么是tag git仓库的tag是git版本库的一个标记,指向某个commit id标记的快照记录指针,所以,标签也是版本库的一个快照. tag主要用于发布版本的管理,一个当版本发布后,可以为git当 ...

  3. 使用mvn 将 pom文件推送到私服

    1.业务场景 现在我有一个 *.pom文件 需要上传到私服. 比如 spring-cloud-dependencies-2021.0.9.pom 这个时候可以使用命令将这个文件传到私服. 2.上传脚本 ...

  4. 构造SLR语法分析表

    构造SLR语法分析表 方法: 1)构造G'的规范LR(0)项集族 2)根据规则生成动作 3)生成转换 4)设置报错 /** * P157 规范LR(0)项集族 * @param grammar */ ...

  5. uni-app小程序项目使用iconfont字体图标

    前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app. 为什么要这么做? 借 ...

  6. Electron 窗体 BrowserWindow

    http://jsrun.net/t/KfkKp https://www.wenjiangs.com/doc/tlsizw1dst https://www.w3cschool.cn/electronm ...

  7. spring 项目实现带请求链路id的日志记录

    我们在做java项目的时候通常需要通过请求日志来排查定位线上问题,在日志比较多而我们又需要查找整个请求的全部日志的时候会比较困难.所以,就需要在日志记录的时候讲同一个请求的关键日志用同一个唯一标识串联 ...

  8. The Financial-Grade Digital Infrastructure

    ​ ​ 01 Product Introduction   The Financial-Grade Digital Infrastructure is a digitally-enabled foun ...

  9. 自用Idea内存配置

    自用Idea内存配置 如下: 使用了zgc,自用48g内存的mac.可以应对8后端4前端同时使用. -Xms1g -Xmx12g -XX:+UseLargePages -XstartOnFirstTh ...

  10. 龙哥量化:通达信的macd改进优化方法及选股公式源码

    有很多同学是看macd的数值,遇到股价比较低的,macd数值变成0.00,就看不明白了, 优化: 第一步,给股价乘100,所有的哦 源码: DIF:EMA(CLOSE*100,12)-EMA(CLOS ...