python Django DigitalOcean应用平台上的Chrome驱动程序错误

ukqbszuj  于 2023-02-15  发布在  Python
关注(0)|答案(1)|浏览(86)

我目前正在使用django和digitalocean上的App平台开发一个Web应用,我的Web应用使用selenium和chromedriver,我已经找到了一种方法来安装chromedriver,使用pip上的chromedriver_binary等Python库,但应用无法打开它,并抛出了一个错误:

Message: Service chromedriver unexpectedly exited. Status code was: 127

此错误很可能意味着某些依赖项和库不可用,并导致脚本崩溃。
下面是我在www.example.com中的当前代码:views.py :

from selenium import webdriver
import chromedriver_binary
import time
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium_stealth import stealth
import undetected_chromedriver as uc
from selenium.webdriver.chromium.options import ChromiumOptions
from selenium.webdriver.common.by import By
import urllib.request
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import UnexpectedAlertPresentException
from selenium.common.exceptions import NoSuchElementException
from googleapiclient.discovery import build
from urllib.parse import urlsplit

def get_webdriver(url):
    options = webdriver.ChromeOptions()
    options.add_argument('--disable-extensions')
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('start-maximized')
    options.add_argument('disable-infobars')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--disable-browser-side-navigation')
    options.add_argument('--disable-gpu')
    driver = webdriver.Chrome()
    driver.get(url)
    return driver

有没有办法(也许使用另一个库,或者一个完全不同的解决方案)在这个django应用上部署chromedriver?
编辑1:
似乎应用程序确实找到了chromedriver,我可以通过下面的代码打印它:

def get_webdriver(url):
    from selenium.webdriver.chrome.service import Service
    driver_path = chromedriver_binary.chromedriver_filename
    print("Driver's path : ", driver_path)
    ser = Service(driver_path)
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    driver = webdriver.Chrome(service=ser)
    driver.get(url)
    return driver

打印返回给我:

/workspace/.heroku/python/lib/python3.10/site-packages/chromedriver_binary/chromedriver

看起来确实缺少一些库或依赖项,但我不知道如何在此应用程序平台上安装它们。

cuxqih21

cuxqih211#

删除不需要的参数,除非有特定要求:

options.add_argument('--disable-extensions')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('start-maximized')
options.add_argument('disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-browser-side-navigation')
options.add_argument('--disable-gpu')

并且只保留想要的一个:

options.add_argument('--headless')

并执行测试。

相关问题