簡體   English   中英

Python Selenium 和 Chromedriver CentOS8

[英]Python Selenium and Chromedriver CentOS8

我有一個 python 腳本,它使用 selenium 和 chromedriver。 它在我的 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 上沒有任何屏幕,所以看不到更多信息。

這是一些信息:

chromedriver 上的 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 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

問題已解決,但不明白如何解決。 我只是重新啟動我的 VPS(重新啟動),然后......它再次工作。 詭異的

編輯:找出原因:我只是在腳本末尾犯了一個錯誤。 b;close(),但是“b”不存在。 我的驅動程序變量名稱是“驅動程序”。

異常被捕獲但沒有顯示,所以我什么也沒看到。 但是今天,我啟動了一個“top”命令,看到所有“chrome”進程都在后台運行。

可能幾天后,memory 已滿,Chrome 無法啟動。 錯誤不清楚,但無論如何,這是我的錯。


解決方案

刪除以下chrome_options

  • --no-sandbox

並以非 root用戶身份執行您的代碼。


結局

這是Sandbox故事的鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM