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-webdriverchromedriver(自动管理 ChromeDriver 版本):npm install chromedriver
webdriverio 或 playwright(虽非 Selenium,但常被对比使用)以下是最简可运行示例,打开百度、搜索“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。
稳定定位是自动化可靠的核心。优先按以下顺序选择策略:
By.id('submit-btn')
By.css('button[type="submit"]')
By.xpath('//div[contains(@class,"error")]/span')
直接写脚本难以长期维护。建议分层设计:
BaiduPage.search(keyword)
driver.manage().setTimeouts({ implicit: 3000 }); 设置隐式等待不复杂但容易忽略:本地调试时加 chrome.Options().addArguments('--auto-open-devtools-for-tabs') 可快速检查元素;CI 环境中用 --headless=new 启动无界面 Chrome。