Python Selenium 和 Chromedriver CentOS8
Python Selenium and Chromedriver CentOS8
我有一个 python 脚本,它使用 selenium 和 chrome 驱动程序。
它在我的 CentOS8 VPS 上完美运行了 3 天没有任何问题。
但是从今天早上开始,脚本启动,等待将近 80 秒并显示:
[12/Jan/2021 23:04:51] ERROR - Failed : Message: chrome not reachable
Traceback (most recent call last):
File "script.py", line 55, in <module>
driver = launch()
File "script.py", line 37, in launch
browser = webdriver.Chrome('/usr/bin/chromedriver',chrome_options=chrome_options)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
没有修改过,为什么现在失败了?
我的 VPS 上没有任何屏幕,所以看不到更多信息。
这是一些信息:
关于 chrome 驱动程序的 yum 信息:
Nom : chromedriver
Version : 87.0.4280.88
Publication : 1.el8
Architecture : x86_64
Taille : 27 M
Source : chromium-87.0.4280.88-1.el8.src.rpm
Dépôt : @System
Depuis le dé : epel
google-chrome --version :
Google Chrome 87.0.4280.141
脚本开头:
from dotenv import load_dotenv
from logger import logger as l
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.chrome.options import Options
import time
import sys
import subprocess
load_dotenv(verbose=True)
dotenv_path = '.env'
load_dotenv(dotenv_path)
def launch():
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
browser = webdriver.Chrome('/usr/bin/chromedriver',chrome_options=chrome_options)
l.info('Started Chrome')
return browser
拇指法则
A common cause for Chrome to crash during startup is running Chrome as root
user (administrator
) on Linux. While it is possible to work around this issue by passing --no-sandbox
flag 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.
解决方案
删除以下内容chrome_options
:
--no-sandbox
并以 非 root 用户身份执行您的代码。
结尾
这是 Sandbox 故事的 link。
问题已解决,但不明白如何解决。
我只是重新启动我的 VPS(重新启动),然后......它再次工作。
奇怪
编辑:找出原因!
我只是在脚本末尾犯了一个错误:
b.close();
但是“b”不存在,我的驱动变量名是“driver”。
异常被捕获,没有显示,所以我什么也没看到。
但是今天,我启动了一个“top”命令,并在后台看到了所有“chrome”进程运行。
可能几天后,内存已满,Chrome无法启动。
错误不清楚,但无论如何,这是我的错。
我有一个 python 脚本,它使用 selenium 和 chrome 驱动程序。 它在我的 CentOS8 VPS 上完美运行了 3 天没有任何问题。
但是从今天早上开始,脚本启动,等待将近 80 秒并显示:
[12/Jan/2021 23:04:51] ERROR - Failed : Message: chrome not reachable
Traceback (most recent call last):
File "script.py", line 55, in <module>
driver = launch()
File "script.py", line 37, in launch
browser = webdriver.Chrome('/usr/bin/chromedriver',chrome_options=chrome_options)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
没有修改过,为什么现在失败了? 我的 VPS 上没有任何屏幕,所以看不到更多信息。
这是一些信息:
关于 chrome 驱动程序的 yum 信息:
Nom : chromedriver
Version : 87.0.4280.88
Publication : 1.el8
Architecture : x86_64
Taille : 27 M
Source : chromium-87.0.4280.88-1.el8.src.rpm
Dépôt : @System
Depuis le dé : epel
google-chrome --version :
Google Chrome 87.0.4280.141
脚本开头:
from dotenv import load_dotenv
from logger import logger as l
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.chrome.options import Options
import time
import sys
import subprocess
load_dotenv(verbose=True)
dotenv_path = '.env'
load_dotenv(dotenv_path)
def launch():
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
browser = webdriver.Chrome('/usr/bin/chromedriver',chrome_options=chrome_options)
l.info('Started Chrome')
return browser
拇指法则
A common cause for Chrome to crash during startup is running Chrome as
root
user (administrator
) on Linux. While it is possible to work around this issue by passing--no-sandbox
flag 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.
解决方案
删除以下内容chrome_options
:
--no-sandbox
并以 非 root 用户身份执行您的代码。
结尾
这是 Sandbox 故事的 link。
问题已解决,但不明白如何解决。 我只是重新启动我的 VPS(重新启动),然后......它再次工作。 奇怪
编辑:找出原因! 我只是在脚本末尾犯了一个错误: b.close(); 但是“b”不存在,我的驱动变量名是“driver”。
异常被捕获,没有显示,所以我什么也没看到。 但是今天,我启动了一个“top”命令,并在后台看到了所有“chrome”进程运行。
可能几天后,内存已满,Chrome无法启动。 错误不清楚,但无论如何,这是我的错。