JavaScript自动化测试常用Selenium WebDriver结合Node.js,通过selenium-webdriver库控制浏览器;需安装Node.js(v16+)和Chrome,执行npm install selenium-webdriver与chromedriver;推荐采用Page Object Model分层设计、Mocha/Jest运行器及显式等待提升可维护性。

JavaScript 实现自动化测试,常用方案是结合 Selenium WebDriver 与 Node.js 生态,通过 selenium-webdriver 库控制真实浏览器执行操作、断言和流程验证。
安装与基础环境准备
确保已安装 Node.js(v16+)和 Chrome 浏览器。使用 npm 安装官方驱动包:
npm install selenium-webdriver- 推荐同时安装
chromedriver(自动管理 ChromeDriver 版本):npm install chromedriver - 若需更简洁的封装,可选
webdriverio或playwright(虽非 Selenium,但常被对比使用)
编写第一个 Selenium 脚本(Node.js + Chrome)
以下是最简可运行示例,打开百度、搜索“JavaScript”,并打印标题:
const { Builder, By, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
async function runTest() {
let driver = await new Builder()
.forBrowser('chrome')
.build();
try {
await driver.get('https://www.baidu.com');
await driver.findElement(By.id('kw')).sendKeys('JavaScript');
await driver.findElement(By.id('su')).click();
await driver.wait(until.titleContains('JavaScript'), 5000);
console.log(await driver.getTitle()); // 输出:JavaScript_百度搜索
} finally {
await driver.quit(); // 关闭浏览器
}
}
runTest();
关键点:使用 async/await 处理异步操作;By.id 等定位器匹配元素;until 提供显式等待能力,避免盲目 sleep。
立即学习“Java免费学习笔记(深入)”;
元素定位与交互的常用方式
稳定定位是自动化可靠的核心。优先按以下顺序选择策略:
-
ID 或 name 属性:最快最稳,如
By.id('submit-btn') -
CSS 选择器:灵活通用,如
By.css('button[type="submit"]') -
XPath:适合动态或无标识结构,但性能略低,如
By.xpath('//div[contains(@class,"error")]/span') - 避免依赖纯文本、绝对 XPath 或坐标点击,易因 UI 变更而失败
组织可维护的测试代码
直接写脚本难以长期维护。建议分层设计:
-
Page Object Model(POM):为每个页面建一个类,封装元素查找和操作方法,例如
BaiduPage.search(keyword) - 使用 Mocha/Jest 作为测试运行器:提供 describe/it、钩子函数(beforeEach)、断言集成
- 配置化驱动启动:支持 headless 模式、超时设置、不同浏览器切换(Chrome/Firefox)
- 示例片段:
driver.manage().setTimeouts({ implicit: 3000 });设置隐式等待
不复杂但容易忽略:本地调试时加 chrome.Options().addArguments('--auto-open-devtools-for-tabs') 可快速检查元素;CI 环境中用 --headless=new 启动无界面 Chrome。










