Selenium 与 Typescript 和 Chromium

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

我想知道如果我使用 Chromium 作为浏览器,我应该在 Typescript 中使用什么 forBrowser 。 forBrowser('chrome') 不起作用。我确认 Selenium 可以与我的设置配合使用(我制作了一个有效的测试 Python 文件),但我的应用程序是在 Typescript 中。也许 forBrowser 不是我应该使用的,我必须以不同的方式引用 Chromium 浏览器?这是我指的那一行:

let driver = new webdriver.Builder().forBrowser(webdriver.Browser.CHROME).build()

这是有效的 Python 代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service as ChromiumService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.os_manager import ChromeType

service = ChromiumService(executable_path="/usr/lib/chromium-browser/chromedriver")
options = Options()
options.add_argument('--headless=new')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(service=service, options=options)
driver.get("https://python.org")
print(driver.title)
driver.close()

与我拥有的 Typescript 语法相比(其中 forBrowser('chrome') 不起作用):

let driver: WebDriver|null = null

let options = new chrome.Options()
options.addArguments('--headless=new')
options.addArguments('--no-sandbox')
options.addArguments('--disable-dev-shm-usage')

driver = new Builder()
  .forBrowser('chrome')
  .setChromeOptions(options)
  .build()

我也尝试添加这个:

options.setChromeBinaryPath('/usr/lib/chromium-browser/chromedriver')

但这也不起作用。

我找到了另一个文档,我在其中尝试了这段代码(看起来与 Python 代码更相似):

let driver: WebDriver|null = null

const options = new chrome.Options()
options.addArguments('--headless=new')
options.addArguments('--no-sandbox')
options.addArguments('--disable-dev-shm-usage')

const service = new chrome.ServiceBuilder()
  .setPath('/usr/lib/chromium-browser/chromedriver')
  .build()

driver = chrome.Driver.createSession(options, service)

但这也不起作用。

我在 Ubuntu Arm 服务器上安装了 Selenium 和 Chromium。

typescript selenium-webdriver chromium
1个回答
0
投票

我想通了!下面的代码有效。

let driver: WebDriver|null = null

const options = new chrome.Options()
options.setChromeBinaryPath('/usr/bin/chromium-browser')
options.addArguments('--headless=new')
options.addArguments('--disable-dev-shm-usage')

const service = new chrome.ServiceBuilder('/usr/lib/chromium-browser/chromedriver')

driver = new Builder()
 .forBrowser('chrome')
 .setChromeOptions(options)
 .setChromeService(service)
 .build()
© www.soinside.com 2019 - 2024. All rights reserved.