我想拥有最新的浏览器引擎而不需要手动下载它们,因此我找到了 webdriver 管理器。尽管 selenium documentation 提到,关于 webdriver 管理器,
// 目前没有推荐的 JavaScript 驱动管理器
webdriver-manager
的 NPM 包,但他们没有提到如何将其与 NodeJs 集成。
现在,我只是运行
webdriver-manager update --out_dir ~/.local/bin/
将文件下载到 PATH
中包含的目录中,但我仍然需要重命名可执行文件,因为 selenium-webdriver
不会自动检测它们。
我正在使用无头浏览器的传统代码
const { Builder, By, until } = require('selenium-webdriver')
const chrome = require('selenium-webdriver/chrome')
const firefox = require('selenium-webdriver/firefox')
//...
let driver
switch (browserForTest) { // browserForTest is fetched from argv
case 'firefox':
driver = await new Builder()
.forBrowser('firefox')
.setFirefoxOptions(new firefox.Options().headless().windowSize(screen))
.build()
break
case 'chrome':
driver = await new Builder()
.forBrowser('chrome')
.setChromeOptions(new chrome.Options().headless().windowSize(screen))
.build()
break
default:
throw Error('Wrong browser: ' + browserForTest)
}
有人用过
webdriver-manager
和 NodeJS 吗?你如何整合它?
如何将 selenium webdriver 管理器与 node/javascript 一起使用?
参见 webdriver-manager 的主分支 (这不是他们的主分支,
legacy
分支才是)
用作依赖项
要将其安装为依赖项:npm install -D webdriver-manager。以下是将 webdriver-manager 作为依赖项运行的示例。该测试下载提供程序并独立启动 selenium 服务器。测试完成后,它将独立关闭selenium服务器。
import { Options, setLogLevel, shutdown, start, update, } from 'webdriver-manager';
自 Selenium 4 发布以来,Selenium 提供了内置的驱动程序管理功能。此功能通过自动管理浏览器驱动程序简化了设置过程。如果您使用 Selenium 版本 4 或更高版本,则不再需要第三方库来管理驱动程序二进制文件。
对于那些使用 Selenium 4 之前版本的用户,可以使用第三方 webdriver-manager 软件包。但请注意,据我所知,Selenium 识别的 Node.js 没有推荐的 webdriver-manager 包
代码示例:
// Here is a simple example using Selenium 4 with Node.js to open
// a Chrome browser, demonstrating the ease of setup with
// the built-in driver management:
import {Browser, Builder} from 'selenium-webdriver';
async function openBrowser() {
let driver = await new Builder()
.forBrowser(Browser.CHROME) // As well for Browser.FIREFOX or EDGE
.build();
try {
await driver.get('https://www.example.com');
console.log('Page opened successfully!');
} catch (error) {
console.error('Failed to open page:', error);
} finally {
await driver.quit();
}
}
openBrowser();
此代码片段是使用 Selenium 4 启动浏览器所需的全部内容,无需手动管理驱动程序的麻烦。这种简单性凸显了集成到 Selenium 4 中的驱动程序管理的改进。