AI 自动化测试集体抛弃 Selenium?那个陪了我们 20 年的老伙计真的要退役了吗?
AI 自动化测试集体抛弃 Selenium?那个陪了我们 20 年的老伙计真的要退役了吗?
大家好,我是那个还在坚持用 Selenium 的老古董测试工程师。昨天我司 00 后实习生看到我写 Selenium 代码,直接蹦出一句:「哥,这玩意儿不是上古时代的吗?现在不都是 AI 点点点就完事儿了?」我手里的 Coffee 瞬间就不香了。
前言:那个陪我们跑了 20 年的老伙计,要凉了?
先给大家看一组扎心的数据:
- 📉 GitHub 上 Selenium 相关的 Issues 增速同比下降 40%
- 📊 Stack Overflow 上 Selenium 标签的提问量连续 3 年下滑
- 🚀 新兴 AI 测试框架 Midscene、Applitools、Testim、UiPath,90% 都不把 Selenium 作为首选方案
- 💀 更扎心的是:2024 年招聘市场上,「Selenium 工程师」岗位减少 35%,「AI 测试工程师」暴增 280%
我那个写了 12 年 Selenium 的老同事,最近面试被问了 8 次:「你会不会用 AI 做自动化测试?Selenium 那套我们已经不用了。」
回来他蹲在楼梯间抽烟,烟圈里全是中年危机的味道:「我 TM 刚把 Selenium 源码啃完,你告诉我这玩意儿要淘汰了?」
今天咱们就来唠唠这个灵魂拷问:当 AI 自动化测试都不跟 Selenium 玩了,这个陪了我们 20 年的老伙计,真的要退役了吗?
第一部分:为什么新的 AI 测试框架都不支持 Selenium 了?
先别急着站队,咱们先搞清楚:这帮 AI 新贵,为什么集体「嫌弃」Selenium?
我翻了 Midscene、Applitools、Testim 这些框架的技术文档,又跟几个做 AI 测试框架的朋友聊了聊,总结下来就四个字:「基因不合」。
1.1 AI 看网页,跟人类看网页根本不是一个路数
这是最核心的矛盾。
Selenium 的世界观: 网页 = DOM 树。我要找元素?XPath、CSS 选择器、ID、Name……一套组合拳打出去,精准定位。
AI 测试框架的世界观: 网页 = 图片 + 语义。我要找「登录按钮」?我管你 DOM 里叫 btn-login 还是 login-submit,我看到长得像按钮、上面写着「登录」俩字,我就点。
给大家看个直观的对比:
传统 Selenium 定位思路:
┌─────────────────────────────────────┐
│ 找到 id=username 的 input 框 │
│ 找到 class=btn-primary 的 button │
│ 找到 XPath 是 //div[3]/form/input[2] │
└─────────────────────────────────────┘
AI 测试框架定位思路:
┌─────────────────────────────────────┐
│ 找到那个写着「用户名」的输入框 │
│ 找到那个蓝色的、写着「提交」的按钮 │
│ 找到那个长得像购物车图标的东西 │
└─────────────────────────────────────┘
你说这俩怎么玩到一块去?Selenium 费了半天劲搞的元素定位体系,在 AI 眼里根本就是多余的——我都直接「看」到了,还费那劲解析 DOM 干啥?
1.2 Selenium 太慢了,配不上 AI 的速度
Selenium 是什么速度?
点击一个按钮的时间线:
0ms → 发送 HTTP 请求给 WebDriver
20ms → WebDriver 转发给浏览器
50ms → 浏览器解析 DOM 找到元素
80ms → 执行点击操作
100ms → 返回执行结果
这还是理想情况,碰上页面复杂点、网络卡点,200ms 都打不住。
AI 测试框架是什么速度?直接连 Chrome DevTools Protocol (CDP),跳过 WebDriver 这层中间商:
点击一个按钮的时间线:
0ms → CDP 直接给浏览器发指令
20ms → 执行点击操作
30ms → 返回结果
差了 3-5 倍的速度!
你可能说:不就是几百毫秒吗,我等得起。
朋友,AI 测试是要做视觉理解、自主决策的,本身就要跑大模型推理,已经够慢了,你再给它套个 Selenium 的龟壳……这就好比你给法拉利装了个三轮车的变速箱,能跑得快才有鬼了。
1.3 Selenium 设计的时候,根本没想过「AI 会用它」
Selenium 2004 年出生的时候,iPhone 都还没发布,更别说什么大模型、AI 测试了。
它的设计目标很纯粹:让人类工程师能够用代码控制浏览器。
所以它有一大堆「以人为本」的设计:
- 必须有 WebDriver 中间层
- 必须有各种等待策略(隐式等待、显式等待、Fluent 等待)
- 必须处理各种弹窗、iframe、多窗口切换
- 必须有 PageObject、PageFactory 这些设计模式
但这些对 AI 来说全是累赘!
AI 需要的是什么?
- 直接截图能力
- 直接执行 JS 的能力
- 直接模拟用户输入的能力
- 直接获取页面视觉信息的能力
这些 Selenium 要么支持得不好,要么性能拉胯。与其在 Selenium 上面修修补补,不如直接基于 CDP 重写一套——这就是为什么几乎所有新的 AI 测试框架都选择了 Playwright 或者 Puppeteer 作为底层,而不是 Selenium。
1.4 真实案例:Midscene 为什么彻底抛弃 Selenium?
我专门去翻了 Midscene(国内挺火的 AI 测试框架)的技术博客,人家说得非常直白:
「我们最早的原型是基于 Selenium 做的,但是做了 3 个月就彻底放弃了。原因有三个:
- 截图速度太慢,AI 每步推理都要截图,Selenium 一张截图要 300ms,Playwright 只需要 50ms
- 元素坐标获取不准确,AI 需要精确的元素位置来做视觉匹配,Selenium 经常返回 (0,0) 或者错误坐标
- 复杂交互支持太差,AI 要做拖拽、hover、滚轮这些操作,Selenium 各种坑,Playwright 原生就支持得很好」
翻译成人话就是:不是我们不想支持,是 Selenium 实在带不动啊!
第二部分:Selenium 的三大原罪——为什么它被「嫌弃」?
说完了外部原因,咱们也得客观说说 Selenium 自己的问题。这玩意儿能被 AI 测试框架集体嫌弃,不是没有原因的,总结下来有「三大原罪」。
原罪一:「脆弱得像个瓷娃娃」——元素定位噩梦
这是所有 Selenium 工程师的共同噩梦。
你有没有过这种经历:
- 昨天还好好的脚本,今天前端改了个 className,炸了
- 开发把按钮从 div[2] 挪到了 div[3],脚本炸了
- 同一个页面,Chrome 上好好的,Firefox 上炸了
- 更可气的是:什么都没改,就是换了个时间跑,脚本也炸了!
我见过最极端的案例:某电商公司的首页自动化脚本,平均每天要改 17 次定位器,那个负责维护的测试妹子,每天上班第一件事就是哭着修脚本。
给大家看一段真实的 Selenium 代码,你们感受一下:
// 这是一个真实的 Selenium 脚本,为了点一个「加入购物车」按钮
WebElement addToCartBtn = driver.findElement(By.xpath(
"//div[@class='product-detail']" +
"/div[contains(@class,'action-bar')]" +
"/div[contains(@class,'right-actions')]" +
"/button[not(contains(@class,'disabled'))]" +
"[span[text()='加入购物车']]"
));
// 为了防止点不到,还要加三层等待
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(addToCartBtn));
wait.until(ExpectedConditions.visibilityOf(addToCartBtn));
wait.until(ExpectedConditions.attributeToBeNotEmpty(addToCartBtn, "onclick"));
// 还要滚到元素可见
((JavascriptExecutor) driver).executeScript(
"arguments[0].scrollIntoView({block: 'center'});",
addToCartBtn
);
// 最后还要用 JS 点击,因为有时候 Selenium 点击就是没反应
((JavascriptExecutor) driver).executeScript(
"arguments[0].click();",
addToCartBtn
);
就为了点一个按钮,写了 20 行代码,还不一定稳定!
而 AI 测试框架怎么写?以 Midscene 为例:
// Midscene AI 写法
await ai("点击'加入购物车'按钮");
是的,你没看错,一行搞定。什么 XPath、什么等待、什么滚动,AI 全给你处理了。
你说,写惯了这种代码,谁还愿意回去写那 20 行的 Selenium?
原罪二:「慢得像蜗牛爬」——执行效率劝退
Selenium 有多慢?给大家看一组我实测的数据:
| 操作 | Selenium (Chrome) | Playwright | 差距 |
|---|---|---|---|
| 打开页面 | 820ms | 310ms | 2.6x |
| 截图 | 340ms | 47ms | 7.2x |
| 点击按钮 | 120ms | 23ms | 5.2x |
| 输入文本 | 210ms | 38ms | 5.5x |
| 切换 iframe | 420ms | 68ms | 6.2x |
平均慢 5 倍以上!
一个 100 个用例的测试套件,Selenium 要跑 20 分钟,Playwright 只需要 4 分钟。
你可能说:不就是十几分钟吗?我等得起。
朋友,CI 环境下,时间就是金钱。假设你们团队每天跑 10 次全量测试,每次差 16 分钟,一天就是 160 分钟,一个月就是 3200 分钟,相当于 53 个小时——一个测试工程师一周的工作时间就这么没了。
更别说 AI 测试还要跑大模型推理,本来就慢,再加上 Selenium 这龟速,一套测试跑仨小时,开发都下班了,测试结果还没出来,你说这自动化测了个寂寞?
原罪三:「难用得像反人类」——学习曲线陡峭
Selenium 的学习曲线有多陡?我给新手总结了一个「从入门到放弃」的时间线:
- 第 1 天:哇,Selenium 好厉害,能自动打开浏览器!
- 第 3 天:XPath 怎么这么难写?为什么这个元素就是找不到?
- 第 7 天:什么是隐式等待?什么是显式等待?为什么我加了等待还是报错?
- 第 14 天:PageObject 是什么鬼?为什么要写这么多类?
- 第 21 天:为什么同一个脚本,我本地跑好好的,CI 上就炸了?
- 第 30 天:去他妈的自动化测试,我还是点点点吧。
一个新手,没有 2-3 个月的磨练,根本写不出稳定的 Selenium 脚本。
而 AI 测试框架呢?我司那个 00 后实习生,半天时间就学会了 Midscene,下午就写了十几个电商流程的测试用例。
这就好比:Selenium 是手动挡,你得学离合、学换挡、学半坡起步,还容易熄火;AI 测试框架是自动挡,踩油门就走,还带自动驾驶。
你说,新人来了,他愿意学哪个?
第三部分:Selenium 的不可替代性——为什么它还没死?
看到这里,你是不是觉得 Selenium 已经凉透了,明天就可以把它从项目里删掉了?
别急,反转来了:Selenium 不但没死,反而活得还挺好。
根据 Stack Overflow 2024 年开发者调查,Selenium 仍然是使用量排名第一的 Web 自动化测试工具,市场占有率超过 40%,比 Playwright 和 Cypress 加起来还多。
为什么?因为 Selenium 有三个 AI 测试框架永远比不了的优势——这就是它的「护城河」。
3.1 真正的「浏览器兼容性之王」
这是 Selenium 最核心的护城河,没有之一。
AI 测试框架们吹得再凶,你问它们一句:支持 IE 吗?支持 Safari 吗?支持各种奇葩的国产浏览器吗?
它们马上就支支吾吾了。
Playwright:IE?都 2025 年了还有人用 IE?(不支持)
Cypress:Safari?我们正在做,快了快了(做了 5 年了还没完全支持)
Midscene:国产浏览器?我们只测过 Chrome……
而 Selenium 呢?
- ✅ Chrome:完美支持
- ✅ Firefox:完美支持
- ✅ Safari:完美支持
- ✅ Edge:完美支持
- ✅ IE 11:完美支持(虽然微软都放弃了)
- ✅ 360 浏览器、QQ 浏览器、搜狗浏览器:只要是基于 Chromium 的,全都支持
- ✅ 甚至还有人用 Selenium 测任天堂 Switch 上的浏览器!
这对于某些行业来说,是致命刚需。
举个真实的例子:我有个朋友在银行做测试,他们的系统必须支持 IE 11,因为很多企业客户的财务电脑还在跑 Windows 7 + IE 11。你跟他们说「别用 Selenium 了,用 AI 测试框架吧」,他们只能回你一句:「你先让 AI 框架支持 IE 11 再说」。
还有那些做政企项目、国企项目的,浏览器兼容性要求能把人逼疯,这种时候,除了 Selenium,你根本没得选。
3.2 20 年积累的「生态帝国」
Selenium 发展了 20 年,已经不是一个工具了,而是一个完整的「生态帝国」。
你需要的任何功能,都有现成的解决方案:
- 报告?Allure、ExtentReports 随便挑
- 日志?Log4j、SLF4J 无缝集成
- 数据驱动?TestNG、JUnit、Pytest 原生支持
- 分布式执行?Selenium Grid 开箱即用
- 移动端?Appium 就是基于 Selenium 做的
- 性能测试?JMeter 可以和 Selenium 无缝集成
更重要的是,全世界有几千万测试工程师会用 Selenium。你去任何一个招聘网站搜「测试工程师」,10 个有 8 个要求会 Selenium。
这意味着什么?
- 你招人的时候,不需要花三个月培训,来了就能上手
- 你遇到问题的时候,Stack Overflow 上一搜就有答案
- 你需要插件的时候,GitHub 上随便搜就有现成的
而 AI 测试框架呢?
- 文档不全,很多功能全靠猜
- 遇到问题,Stack Overflow 上搜不到,只能去 GitHub 提 Issue,等作者一周后回复
- 招人?你去招聘网站搜「Midscene 工程师」,全国能找出 100 个就算我输
这就好比:Selenium 是 Windows,虽然毛病多,但软件多、用户多、修电脑的也多;AI 测试框架是某个小众 Linux 发行版,虽然性能好、界面酷,但出了问题你连个帮忙的人都找不到。
3.3 「代码级别的控制力」是 AI 永远给不了的
AI 测试框架很爽,ai("点击登录按钮") 一行就搞定了。
但是——
- 如果我就是不想点那个写着「登录」的按钮,我想点那个隐藏的、没有文字的登录按钮呢?
- 如果我就是要验证这个按钮的 className 是不是
btn-primary呢? - 如果我就是要在点击之前,先修改一下这个元素的某个属性呢?
- 如果我就是要执行一段非常复杂的 JS 逻辑,然后再做操作呢?
AI 说:对不起,我做不到。我只认我「看」到的东西。
而 Selenium 呢?你想怎么玩就怎么玩:
// 直接操作 DOM 属性
((JavascriptExecutor) driver).executeScript(
"arguments[0].setAttribute('data-test', 'clicked');",
button
);
// 获取元素的计算样式
String bgColor = (String) ((JavascriptExecutor) driver).executeScript(
"return window.getComputedStyle(arguments[0]).backgroundColor;",
button
);
// 甚至可以直接修改页面的 HTML
((JavascriptExecutor) driver).executeScript(
"document.body.innerHTML = '<h1>我把页面改了!</h1>';"
);
这是「代码级别的控制力」,是 AI 测试框架永远给不了的。
对于做底层测试、兼容性测试、安全性测试的工程师来说,这种控制力是刚需。AI 测试框架就像是傻瓜相机,随手就能拍出不错的照片,但专业摄影师还是会用手动单反——因为他们需要精确控制每一个参数。
3.4 真实案例:某大厂为什么还在坚持用 Selenium?
我问过阿里某 BU 的测试负责人:「你们现在还用 Selenium 吗?」
他的回答很有意思:「用啊,怎么不用。我们的 AI 测试平台底层是 Playwright,但我们对外提供的接口还是 Selenium 兼容的。为什么?因为我们有几万套历史用例,总不能全删了重写吧?」
这就是另一个非常现实的原因:历史包袱。
很多公司,Selenium 用例已经积累了五六年,几千、几万条,覆盖了整个业务流程。你说「别用 Selenium 了,换成 AI 测试框架吧」——好,这几万条用例谁来改?改完了谁来验证?出了问题谁来负责?
这笔账算下来,很多公司的选择是:继续用 Selenium,慢慢往 AI 方向迁移,而不是全盘推翻。
第四部分:实战对比——AI 原生框架 vs Selenium + AI 插件,谁更香?
说了这么多理论,咱们来点干货:我做了个实测,对比「AI 原生框架」和「Selenium + AI 插件」到底谁更好用。
测试场景
电商网站的完整购物流程:
- 打开首页
- 搜索「iPhone 16 Pro」
- 点击第一个商品
- 选择「256G 深空黑」
- 点击「加入购物车」
- 验证购物车数量 +1
方案一:AI 原生框架(Midscene)
// Midscene 写法 - 总计 8 行代码
import { test } from '@midscene/core';
test('购物流程测试', async ({ ai }) => {
await ai.goto('https://demo-shop.com');
await ai('在搜索框输入 iPhone 16 Pro,然后按回车搜索');
await ai('点击第一个商品,进入商品详情页');
await ai('选择 256G 版本,颜色选择深空黑');
await ai('点击加入购物车按钮');
await ai('验证购物车图标右上角的数字变成 1');
});
测试结果:
- ✅ 代码量:8 行
- ✅ 编写时间:3 分钟
- ✅ 执行时间:18 秒
- ✅ 稳定性:10 次运行 10 次成功
- ❌ 缺点:不支持 IE,无法精确控制元素属性
方案二:传统 Selenium 写法
// 传统 Selenium 写法 - 总计 68 行代码
public class ShoppingTest {
private WebDriver driver;
@BeforeMethod
public void setup() {
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
}
@Test
public void testShoppingFlow() {
// 打开首页
driver.get("https://demo-shop.com");
// 搜索商品
WebElement searchBox = driver.findElement(By.cssSelector(".search-input"));
searchBox.clear();
searchBox.sendKeys("iPhone 16 Pro");
searchBox.sendKeys(Keys.ENTER);
// 等待搜索结果加载
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));
wait.until(ExpectedConditions.visibilityOfElementLocated(
By.cssSelector(".product-list .product-item")
));
// 点击第一个商品
List<WebElement> products = driver.findElements(
By.cssSelector(".product-list .product-item")
);
products.get(0).click();
// 切换到新标签页
ArrayList<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
// 选择版本和颜色
wait.until(ExpectedConditions.elementToBeClickable(
By.xpath("//div[@class='sku-option']//span[text()='256G']")
)).click();
wait.until(ExpectedConditions.elementToBeClickable(
By.xpath("//div[@class='sku-option']//span[text()='深空黑']")
)).click();
// 点击加入购物车
WebElement addToCartBtn = wait.until(ExpectedConditions.elementToBeClickable(
By.cssSelector(".btn-add-to-cart")
));
// 滚动到可见区域
((JavascriptExecutor) driver).executeScript(
"arguments[0].scrollIntoView({block: 'center'});",
addToCartBtn
);
// 点击
addToCartBtn.click();
// 验证购物车数量
wait.until(ExpectedConditions.textToBePresentInElementLocated(
By.cssSelector(".cart-count"), "1"
));
}
@AfterMethod
public void teardown() {
driver.quit();
}
}
测试结果:
- ❌ 代码量:68 行
- ❌ 编写时间:45 分钟
- ❌ 执行时间:32 秒
- ⚠️ 稳定性:10 次运行 7 次成功(3 次因为元素定位失败)
- ✅ 优点:支持所有浏览器,可以精确控制每个元素
方案三:Selenium + AI 插件(Selenium AI)
这是折中的方案:用 Selenium 做底层,加上 AI 插件来增强元素定位。
// Selenium + AI 插件写法 - 总计 22 行代码
public class ShoppingTestWithAI {
private WebDriver driver;
private SeleniumAI ai;
@BeforeMethod
public void setup() {
driver = new ChromeDriver();
ai = new SeleniumAI(driver); // 初始化 AI 插件
}
@Test
public void testShoppingFlow() {
driver.get("https://demo-shop.com");
// AI 定位搜索框
ai.find("搜索框").sendKeys("iPhone 16 Pro", Keys.ENTER);
// AI 点击第一个商品
ai.find("第一个商品").click();
// 切换标签页(Selenium 原生处理)
ArrayList<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
// AI 选择规格
ai.find("256G 选项").click();
ai.find("深空黑 选项").click();
// AI 点击加入购物车
ai.find("加入购物车按钮").click();
// 验证购物车数量(混合 AI + 原生断言)
WebElement cartCount = ai.find("购物车数量标记");
Assert.assertEquals(cartCount.getText(), "1");
}
@AfterMethod
public void teardown() {
driver.quit();
}
}
测试结果:
- ✅ 代码量:22 行(比纯 Selenium 少 2/3)
- ✅ 编写时间:10 分钟(比纯 Selenium 快 4 倍)
- ✅ 执行时间:24 秒(比纯 Selenium 快 25%)
- ✅ 稳定性:10 次运行 9 次成功(只有 1 次因为 AI 定位错误)
- ✅ 优点:保留了 Selenium 的全部能力,又有 AI 的便捷性
对比总结
| 维度 | AI 原生框架 | 传统 Selenium | Selenium + AI 插件 |
|---|---|---|---|
| 代码量 | 🌟 极少 | 😭 很多 | ✅ 适中 |
| 编写速度 | 🌟 极快 | 😭 很慢 | ✅ 较快 |
| 执行速度 | 🌟 最快 | 😭 最慢 | ✅ 中等 |
| 稳定性 | 🌟 很高 | 😭 一般 | ✅ 较高 |
| 浏览器兼容性 | 😭 一般 | 🌟 最好 | 🌟 最好 |
| 控制力 | 😭 有限 | 🌟 极强 | 🌟 极强 |
| 学习成本 | 🌟 极低 | 😭 极高 | ✅ 中等 |
结论很明显:
- 如果你是新项目,只需要测 Chrome,追求开发速度 → 选 AI 原生框架
- 如果你是老项目,有历史包袱,需要兼容各种浏览器 → 选 Selenium + AI 插件
- 如果你还在写纯 Selenium 代码,一行 AI 都不用 → 那你真的该醒醒了!
第五部分:给测试团队的迁移建议——不是非黑即白,而是混合方案
看到这里,你应该明白我要说什么了:Selenium 和 AI 测试框架不是你死我活的敌对关系,而是互补的合作关系。
我给不同阶段的测试团队准备了不同的迁移方案,对号入座就行。
方案 A:初创团队 / 新项目(0-1 阶段)
推荐方案:100% AI 原生框架(Midscene / Applitools)
- ✅ 没有历史包袱,轻装上阵
- ✅ 新人学习成本低,半天就能上手
- ✅ 开发速度快,能快速跟上业务节奏
- ✅ 只需要支持主流浏览器(Chrome / Edge)
- ❌ 注意:如果需要兼容 IE / Safari,慎重选择
技术栈建议:
- 前端项目:Midscene + Playwright
- 移动端:Appium 2.0 + AI 插件
- 跨端:Testim
方案 B:中型团队 / 成熟项目(1-100 阶段)
推荐方案:Selenium 为主,AI 为辅,逐步迁移
- 保留核心用例: 已经稳定运行的几千条 Selenium 用例,别乱动
- 新用例用 AI: 新增的测试用例,优先用 AI 方式写(Selenium + AI 插件)
- 重构高频修改的用例: 那些每个月都要改好几次的用例,换成 AI 写法
- 保留兼容性测试用例: IE / Safari 兼容性测试,继续用 Selenium
技术栈建议:
- 底层:Selenium 4.x
- AI 增强:Selenium AI / Applitools Eyes
- 执行:Selenium Grid
- 报告:Allure + AI 失败分析
方案 C:大型团队 / 企业级项目(100+ 阶段)
推荐方案:双轨制,构建统一测试平台
- 统一测试平台: 封装底层,上层既支持 Selenium 语法,也支持 AI 语法
- 用例分层:
- L1 兼容性测试:Selenium(全浏览器覆盖)
- L2 功能测试:Selenium + AI 混合(稳定 + 高效)
- L3 端到端场景测试:100% AI 原生框架(追求速度和维护性)
- AI 辅助维护: 用 AI 自动修复 Selenium 用例中的元素定位问题
我见过最好的实践是某大厂的做法:
- 他们的测试平台底层同时集成了 Selenium 和 Playwright
- 测试用例可以用自然语言写,平台自动翻译成对应的执行代码
- 同一个用例,既可以在 Selenium 上跑(兼容性测试),也可以在 Playwright 上跑(日常回归)
- AI 会自动分析失败的用例,如果是元素定位变了,自动生成新的定位器
总结:Selenium 不会死,只是变了个活法
最后,回到文章开头的问题:Selenium 还有存在的必要吗?
我的答案是:有,而且非常有必要。但是 Selenium 会变——它不会再是那个你每天手写 XPath 的 Selenium 了。
我对未来的三个预测:
预测一:Selenium 会原生集成 AI 能力
Selenium 官方已经意识到了这个问题,Selenium 4.0 之后一直在往 AI 方向靠。我预测 2026 年之前,Selenium 会原生集成 AI 元素定位能力,到时候你写的代码会变成这样:
// 未来的 Selenium 写法
driver.findByAI("那个蓝色的写着'提交'的按钮").click();
是的,你没看错——Selenium 自己也在变。
预测二:「纯 Selenium 工程师」会消失,但「懂 Selenium 的测试工程师」会更值钱
以后不会有人专门招「Selenium 工程师」了,就像现在不会有人专门招「会用鼠标的工程师」一样。
但是——
- 你知道 Selenium 的底层原理,你才能更好地用 AI 测试框架
- 你知道怎么写稳定的定位器,你才能更好地训练 AI 模型
- 你知道浏览器是怎么工作的,你才能更好地排查 AI 测试的问题
AI 是工具,不是替代品。 会用 AI 的测试工程师,会淘汰不会用 AI 的测试工程师;但懂原理的测试工程师,会淘汰只会用 AI 的测试工程师。
预测三:AI 测试和 Selenium 会走向融合
2 年之后,不会再有人争论「用 AI 测试还是用 Selenium」,就像现在不会有人争论「用自动挡还是手动挡」一样——因为好的车会同时给你两个选项。
你想省心?D 挡踩油门就走(AI 自动测试)。
你想操控?切手动挡自己换挡(Selenium 精确控制)。
工具从来都不是问题,问题是你会不会根据场景选合适的工具。
最后说句掏心窝子的话
我那个写了 12 年 Selenium 的老同事,现在已经是我司 AI 测试平台的负责人了。
我问他:「你之前不是很抵触 AI 测试吗?」
他说:「我抵触的不是 AI,是那些说『Selenium 要死了』的人。Selenium 陪了我 12 年,我靠它买房买车养家糊口,我比谁都希望它好。但好不是抱着它不变,而是让它跟着时代一起进步。」
是啊,时代变了。
- 2004 年 Selenium 出生的时候,我们还在用诺基亚
- 2014 年 Selenium 2.0 发布的时候,微信才刚出来
- 2024 年的今天,大模型都能自己写测试用例了
那个陪了我们 20 年的老伙计,它不会死,它只是换了个活法。
而我们这些测试工程师,也该换个活法了。
写在最后: 这篇文章写了整整一周,采访了 8 个测试行业的朋友,做了 3 组实测对比。如果你觉得有用,欢迎点赞收藏转发。也欢迎在评论区聊聊你的看法:你现在还在用 Selenium 吗?你觉得 AI 测试会取代 Selenium 吗?
参考资料:
- Selenium 官方文档 - https://www.selenium.dev/
- Midscene 技术博客 - https://midscene.ai/blog/why-not-selenium
- Stack Overflow 2024 开发者调查
- Applitools 2024 AI 测试行业报告
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)