Linux Mint新系统安装后Chrome binary错误及Firefox适配问题求助
Selenium在Linux Mint下无法运行的问题解决
问题背景
刚安装Linux Mint系统,已配置Github、PyCharm,下载代码并安装Selenium等依赖包。此前在Ubuntu上可正常运行的Selenium代码,现在无法工作:Chrome首次运行会下载驱动但随后报错,改用Firefox后仍出现错误。
Chrome相关问题
原代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager s = Service(ChromeDriverManager().install()) chrome_options = Options() chrome_options.add_experimental_option("detach",True) """ The browser will be started. """ browser = webdriver.Chrome(service=s, options=chrome_options) browser.maximize_window() browser.get("https://rahulshettyacademy.com") print(browser.title) browser.get("https://rahulshettyacademy.com/angularpractice/") print(browser.title)
错误信息
/home/halovivek/PycharmProjects/yearcoding/venv/bin/python /home/halovivek/PycharmProjects/yearcoding/26092022_selenium1.py Traceback (most recent call last): File "/home/halovivek/PycharmProjects/yearcoding/26092022_selenium1.py", line 13, in <module> browser = webdriver.Chrome(service=s, options=chrome_options) File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__ super().__init__(DesiredCapabilities.CHROME['browserName'], "goog", File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/chromium/webdriver.py", line 92, in __init__ super().__init__( File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 270, in __init__ self.start_session(capabilities, browser_profile) File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 363, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 428, in execute self.error_handler.check_response(response) File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 243, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary Stacktrace: #0 0x55d1d6012693 <unknown> #1 0x55d1d5e0bb0a <unknown> #2 0x55d1d5e2e46e <unknown> #3 0x55d1d5e2c1f4 <unknown> #4 0x55d1d5e67953 <unknown> #5 0x55d1d5e61743 <unknown> #6 0x55d1d5e37533 <unknown> #7 0x55d1d5e38715 <unknown> #8 0x55d1d60627bd <unknown> #9 0x55d1d6065bf9 <unknown> #10 0x55d1d6047f2e <unknown> #11 0x55d1d60669b3 <unknown> #12 0x55d1d603be4f <unknown> #13 0x55d1d6085ea8 <unknown> #14 0x55d1d6086052 <unknown> #15 0x55d1d60a071f <unknown> #16 0x7f5a5a21a1da <unknown> #17 0x7f5a5a2a2d84 <unknown> Process finished with exit code 1
解决方法
错误提示cannot find Chrome binary,说明系统未安装Chrome,或Selenium无法定位Chrome的安装路径:
- 若未安装Chrome,打开终端执行:
sudo apt install google-chrome-stable - 若已安装Chrome仍报错,在代码中指定Chrome二进制文件路径:
chrome_options = Options() # 路径一般为/usr/bin/google-chrome-stable,可根据实际情况调整 chrome_options.binary_location = "/usr/bin/google-chrome-stable" chrome_options.add_experimental_option("detach",True)
Firefox相关问题
原代码
import os from selenium import webdriver from selenium.webdriver.firefox.service import Service as FirefoxService from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.select import Select from selenium.webdriver.support.wait import WebDriverWait from webdriver_manager.firefox import GeckoDriverManager #options = Options() options = webdriver.FirefoxOptions() options.binary_location = r"/usr/bin/" options.add_argument("start-maximized") options.add_experimental_option("detach", True) service = FirefoxService(log_path=os.devnull,) browser = webdriver.Firefox(service= FirefoxService(GeckoDriverManager().install()), options=options) #browser = webdriver.Firefox(service=service,options=options,) capabilities = webdriver.FirefoxOptions().to_capabilities() options.set_capability("cloud:options", capabilities) browser.maximize_window() browser.implicitly_wait(5) browser.get("https://the-internet.herokuapp.com/windows") print(browser.title)
错误信息
/home/halovivek/PycharmProjects/yearcoding/venv/bin/python /home/halovivek/PycharmProjects/yearcoding/27092002_selenium3.py [WDM] - Downloading: 16.2kB [00:00, 11.9MB/s] Traceback (most recent call last): File "/home/halovivek/PycharmProjects/yearcoding/27092002_selenium3.py", line 15, in <module> browser = webdriver.Firefox(service= FirefoxService(GeckoDriverManager().install()), options=options) File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/firefox/webdriver.py", line 177, in __init__ super().__init__( File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 270, in __init__ self.start_session(capabilities, browser_profile) File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 363, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 428, in execute self.error_handler.check_response(response) File "/home/halovivek/PycharmProjects/yearcoding/venv/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 243, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidArgumentException: Message: binary is not a Firefox executable Process finished with exit code 1
解决方法
错误提示binary is not a Firefox executable,因为binary_location被设置为目录而非可执行文件:
- 若未安装Firefox,执行:
sudo apt install firefox - 修改代码中的
binary_location为Firefox实际路径(一般为/usr/bin/firefox),同时注意Firefox不支持add_experimental_option("detach", True),需删除该行。简化后的代码如下:from selenium import webdriver from selenium.webdriver.firefox.service import Service as FirefoxService from webdriver_manager.firefox import GeckoDriverManager options = webdriver.FirefoxOptions() options.binary_location = "/usr/bin/firefox" options.add_argument("start-maximized") service = FirefoxService(GeckoDriverManager().install()) browser = webdriver.Firefox(service=service, options=options) browser.implicitly_wait(5) browser.get("https://the-internet.herokuapp.com/windows") print(browser.title)
内容的提问来源于stack exchange,提问作者vivek rajagopalan
相关产品推荐
相关产品推荐

