Estoy tratando de ejecutar algunas pruebas simples en una aplicación NodeJS, usando Selenium y el navegador Brave.
Estoy ejecutando Big Sur (11.5.2), usando la versión Brave:
Version 1.28.105 Chromium: 92.0.4515.131 (Official Build) (x86_64)He descargado ChromeDriver y lo he instalado en mi ruta:
> which chromedriver /Users/dd/bin/scripts/chromedriver > chromedriver --version ChromeDriver 92.0.4515.107 (87a818b10553a07434ea9e2b6dccf3cbe7895134-refs/branch-heads/4515@{#1634}) Creé una carpeta, inicié hilo, agregué el selenium-webdriver como una dependencia de desarrollo,
{ "name": "seleniumtest", "version": "1.0.0", "description": "seleniumtest", "main": "index.js", "license": "MIT", "dependencies": { "cors": "^2.8.5", "express": "^4.17.1" }, "devDependencies": { "eslint": "^7.32.0", "jest": "^27.0.6", "nodemon": "^2.0.12", "selenium-webdriver": "^4.0.0-beta.4" }, "scripts": { "start": "node ./index.js" } } ejecute el siguiente archivo Javascript, index.js :
const { Builder, By, Key, until } = require('selenium-webdriver'); (async function example() { let driver = await new Builder().forBrowser('brave').build(); try { await driver.get('http://www.google.com/'); await driver.findElement(By.name('q')).sendKeys('webdriver', Key.RETURN); await driver.wait(until.titleIs('webdriver - Google Search'), 1000); } finally { await driver.quit(); } })();He encendido el chromedriver:
> chromedriver Starting ChromeDriver 92.0.4515.107 (87a818b10553a07434ea9e2b6dccf3cbe7895134-refs/branch-heads/4515@{#1634}) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully. pero cuando ejecuto yarn start obtengo:
UnhandledPromiseRejectionWarning: Error: Do not know how to build driver: browser; did you forget to call usingServer(url)? Si reemplazo Builder().forBrowser('brave').build(); con Builder().forBrowser('chrome').build(); luego, Chrome se enciende, pero la ventana simplemente se queda allí tratando de cargar data:, en la barra de URL. Probé chromium , el mismo resultado que para brave .
¿Qué estoy haciendo mal?
Puede usar la función setChromeBinaryPath y señalarle la valiente ruta binaria:
const chrome = require('selenium-webdriver/chrome'); (async function helloSelenium(){ let options = await new chrome.Options(); options.setChromeBinaryPath('/opt/brave.com/brave/brave-browser');en forBrowser('brave') reemplácelo con 'chrome', ya que Selenium hará un cambio de caso con eso y solo los valores en la enumeración del navegador serán válidos (chrome, edge, firefox, internet_explorer, safari, opera);