可以 运行 Selenium v4.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 另一个问题来检查是否有人知道一些解决方法。
我正在尝试将 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 另一个问题来检查是否有人知道一些解决方法。