使用axe core和webdriverjs的无障碍测试用例报错:UnhandledPromiseRejectionWarning
解决Ubuntu 22.04上Selenium+axe无障碍测试启动失败问题
一、修正代码中的Promise处理问题
你的代码混用了await和.then(),且analyze回调使用async会导致未捕获的Promise拒绝,同时driver.close()仅关闭窗口而非终止驱动进程,这些问题会加重启动异常。修正后的代码如下:
const AxeBuilder = require('@axe-core/webdriverjs'); const { Builder, promise } = require('selenium-webdriver'); const firefox = require('selenium-webdriver/firefox'); promise.USE_PROMISE_MANAGER = false; async function main() { let driver; try { const options = new firefox.Options(); // 适配Ubuntu无头环境的参数 options.headless() .addArguments('--no-sandbox') .addArguments('--disable-dev-shm-usage') .addArguments('--disable-gpu'); driver = new Builder() .forBrowser('firefox') .setFirefoxOptions(options) .build(); await driver.get('https://digital.hamburg.de/'); const results = await new AxeBuilder(driver).analyze(); console.log(results.violations); } catch (e) { console.error("测试执行失败:", e.message); console.error(e.stack); } finally { if (driver) { await driver.quit(); // 彻底终止驱动进程 } } } main().catch(err => console.error("全局未捕获错误:", err));
二、解决Ubuntu环境下Firefox依赖缺失问题
Ubuntu服务器版默认缺少Firefox图形运行所需的依赖,这是驱动启动失败(错误码2)的核心原因之一。执行以下命令安装依赖:
sudo apt update && sudo apt install -y firefox libgtk-3-0 libdbus-glib-1-2 libxt6 libx11-xcb1 libxcomposite1 libxdamage1 libxrandr2 libasound2 libpangocairo-1.0-0 libcups2 libatspi2.0-0 libxss1 libnss3
三、确保Geckodriver与Firefox版本兼容
Geckodriver和Firefox版本必须严格匹配,否则会出现启动异常:
- 查看当前Firefox版本:
firefox --version - 下载对应版本的Geckodriver,解压后放到
/usr/local/bin/目录,赋予执行权限:
chmod +x /usr/local/bin/geckodriver
四、验证环境可用性
执行以下命令测试Firefox无头模式是否能正常启动:
firefox --headless --no-sandbox --disable-dev-shm-usage https://digital.hamburg.de/
如果命令能正常执行无报错,说明环境配置没问题,再重新运行测试代码。
内容的提问来源于stack exchange,提问作者Jaw. M.
相关产品推荐
相关产品推荐

