如何在Heroku的特定目录(/ app / assets / chromedriver)中安装chromedriver?

时间:2019-01-14 12:12:01

标签: python selenium heroku selenium-chromedriver

问题

我一直在使用Selenium处理Python脚本,该脚本在本地运行良好(因为我在正确的目录assets/chromedriver中安装了ChromeDriver),但在Heroku上不起作用。我收到的错误消息的摘要是:

'chromedriver' executable needs to be in PATH.
No such file or directory: '/app/assets/chromedriver': '/app/assets/chromedriver'
ensure chromedriver is installed at /app/assets/chromedriver

已采取的步骤

在部署到Heroku时,我已经在我的应用程序上安装了以下Buildpack:

  1. https://github.com/heroku/heroku-buildpack-python
  2. https://github.com/heroku/heroku-buildpack-chromedriver
  3. https://github.com/heroku/heroku-buildpack-google-chrome

(注意:StackOverflow上的很多答案都改为谈论heroku-xvfb-google-chrome buildpack,但我不想使用它,因为它依赖于Cedar-14,它将在今年4月弃用。)

我尝试将$GOOGLE_CHROME_BIN$GOOGLE_CHROME_SHIM设置为指向app/assets/chromedriver目录的配置变量,但这没有用。是否有人知道如何在Heroku的特定目录(本例中为app/assets/chromedriver)中安装chromedriver?

我已经为此苦苦挣扎好几天了,非常感谢我能提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

使用heroku congfig:set命令设置以下路径

heroku config:set CHROMEDRIVER_PATH=/app/.chromedriver/bin/chromedriverheroku config:set GOOGLE_CHROME_BIN=/app/.apt/usr/bin/google-chrome

使用heroku config命令验证路径

您可以使用此代码段配置您的定义

import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def load_chrome_driver(proxy):

      options = Options()

      options.binary_location = os.environ.get('GOOGLE_CHROME_BIN')

      options.add_argument('--headless')
      options.add_argument('--disable-gpu')
      options.add_argument('--no-sandbox')
      options.add_argument('--remote-debugging-port=9222')
      options.add_argument('--proxy-server='+proxy)

      return webdriver.Chrome(executable_path=str(os.environ.get('CHROMEDRIVER_PATH')), chrome_options=options)

我正在使用代理,但是您可以避免这种情况。