可以 运行 Selenium v​​4.1.5 与 Debian v11.3 上的 Chromedriver v101.0.4951 吗?

Is possible to run Selenium v4.1.5 with the Chromedriver v101.0.4951 on Debian v11.3?

我正在尝试将 selenium 与某些版本的 Chroium Web 驱动程序一起使用。为此,我在 Debian 上安装了 webdriver_manager(在 Windows 10 Pro 上安装了 WSL 2)

pip install webdriver_manager

我使用了 selenium 4 包 README 文件中推荐的行。我安装了 4.1.5 版本

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.utils import ChromeType

driver = webdriver.Chrome(service=Service(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()))

但是我得到了这个错误。我看过可能是selenium版本不兼容这个特定版本的chrome驱动,而是在quick reference guide of Selenium, the download version is available the 101.0.4951.41版本。我已经为 Debian 安装了最新的 chrome 版本和 chrome 驱动程序,现在是版本 101.0.4951.64。由于取的webdriver是/home/db/.wdm/drivers/chromedriver/linux64/101.0.4951.41/chromedriver的,不是系统安装的,不知道是不是一定要和系统安装的chrome版本匹配。它们必须完全匹配吗?

这是我 运行 python 脚本后的错误:

====== WebDriver manager ======
Current chromium version is 101.0.4951
Get LATEST chromedriver version for 101.0.4951 chromium
Driver [/home/db/.wdm/drivers/chromedriver/linux64/101.0.4951.41/chromedriver] found in cache
Traceback (most recent call last):
    File "/path/to/python/project/webdriver.py", line 21, in <module>
        driver = webdriver.Chrome(
    File "/path/to/python/project/env/lib/python3.9/site-packages/selenium/webdriver/chrome/webdriver.py", line 70, in __init__
        super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
    File "/path/to/python/project/env/lib/python3.9/site-packages/selenium/webdriver/chromium/webdriver.py", line 92, in __init__
        RemoteWebDriver.__init__(
    File "/path/to/python/project/env/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 275, in __init__
        self.start_session(capabilities, browser_profile)
    File "/path/to/python/project/env/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 365, in start_session
        response = self.execute(Command.NEW_SESSION, parameters)
    File "/path/to/python/project/env/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 430, in execute
        self.error_handler.check_response(response)
    File "/path/to/python/project/env/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.WebDriverException: Message: chrome not reachable

此外,我还遇到了另一个错误:

selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist

而且我不得不添加这段代码来修复它。但我认为这不会成为问题:

chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument("--remote-debugging-port=9222")

driver = webdriver.Chrome(
    service=Service(
        ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install(),
        # executable_path='/usr/bin/chromium'
    ),
    options=chrome_options
)

所以不知道是版本相关的问题还是WSL的问题。我还能检查什么?

最后,解决我问题的方法是将标志 --no-sandbox--headless 添加到选项对象

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--no-sandbox")  # without this error > "chrome not found"
chrome_options.add_argument("--headless")    # without this error > "chrome not found"
chrome_options.add_argument("--remote-debugging-port=9222")
chrome_options.add_argument("--disable-dev-shm-using")

尽管如此,它仍然会给出一些随机行为。我认为这是由于我在 WSL 系统内的互联网连接速度较慢。我正在做一些研究,但仍然没有找到任何解决方案。我会 post 另一个问题来检查是否有人知道一些解决方法。