我想知道如果我使用 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。
我想通了!下面的代码有效。
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()