如何将selenium webdriver管理器与node/javascript一起使用?

问题描述 投票:0回答:2

我想拥有最新的浏览器引擎而不需要手动下载它们,因此我找到了 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 一起使用?

node.js selenium-webdriver webdriver-manager
2个回答
2
投票

webdriver-manager(主):README.md:

参见 webdriver-manager 的主分支 (这不是他们的主分支,

legacy
分支才是)

用作依赖项

要将其安装为依赖项:npm install -D webdriver-manager。以下是将 webdriver-manager 作为依赖项运行的示例。该测试下载提供程序并独立启动 selenium 服务器。测试完成后,它将独立关闭selenium服务器。

import {
  Options,
  setLogLevel,
  shutdown,
  start,
  update,
} from 'webdriver-manager';

0
投票

自 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 中的驱动程序管理的改进。

© www.soinside.com 2019 - 2024. All rights reserved.