I want to run selenium through chromium. I wrote this code:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument("--disable-gpu")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
options.binary_location = "/snap/bin/chromium"
driver = webdriver.Chrome(chrome_options=options)
But this code throws an error:
selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist
Stacktrace:
#0 0x55efd7355a23 <unknown>
#1 0x55efd6e20e18 <unknown>
#2 0x55efd6e46e12 <unknown>
The chromodriver of the correct version is in usr/bin. What am I doing wrong?
CodePudding user response:
Thumb rule
A common cause for Chrome to crash during startup is running Chrome as
rootuser (administrator) on Linux. While it is possible to work around this issue by passing--no-sandboxflag when creating your WebDriver session, such a configuration is unsupported and highly discouraged. You need to configure your environment to run Chrome as a regular user instead.
However you need to take careof a couple of things:
--disable-gpuwas related to windows, so you need to drop it.chrome_optionsis deprecated, useoptionsinstead.driver = webdriver.Chrome(options=options)
References
You can find a couple of relevant detailed discussions in:
- WebDriverException: unknown error: DevToolsActivePort file doesn't exist while trying to initiate Chrome Browser
- Selenium-Python with chromium browser (windows)
- unknown error: DevToolsActivePort file doesn't exist error while executing Selenium UI test cases on ubuntu
CodePudding user response:
I solved the problem by reinstalling chromium through apt sudo apt install chromium-browser (before that it was installed through snap). My working code looks like this
options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
if headless:
options.add_argument('--headless')
options.binary_location = "/usr/bin/chromium-browser"
self.driver = webdriver.Chrome(options=options)
