【问题标题】:Selenium web driver can't open browser on HerokuSelenium Web 驱动程序无法在 Heroku 上打开浏览器
【发布时间】:2019-12-14 05:50:42
【问题描述】:

我有一个带有 Python 脚本的 Node.js 应用程序,该脚本使用 Selenium webdriver。 当我在本地运行它时,一切都按预期工作。部署到 Heroku 时,Web 浏览器无法从应用打开。

这是我的代码:

browser = webdriver.Firefox(executable_path='C:\\path\\to drivers\\geckodriver.exe')
browser.minimize_window()
browser.maximize_window()
browser.get('http://www.google.com')

浏览器控制台错误:

HTTP500: SERVER ERROR - 服务器遇到了阻止它完成请求的意外情况。

更新: 根据 Chris 的建议,我将代码更新为:

browser = webdriver.Chrome()

并添加了 google-chrome buildpack。

但在运行网页版时仍然无法打开浏览器。 Heroku 日志提到了 PATH。但是驱动程序在 PATH 中。一切都在本地工作。 显然,我错过了一些东西。

2019-08-07T11:27:54.690913+00:00 app[web.1]: { 错误:selenium.common.exceptions.WebDriverException:消息:“chromedriver”可执行文件需要在 PATH 中。请看https://sites.google.com/a/chromium.org/chromedriver/home

非常感谢任何指导。

【问题讨论】:

标签: node.js python-3.x selenium-webdriver heroku selenium-firefoxdriver


【解决方案1】:
browser = webdriver.Firefox(executable_path='C:\\path\\to drivers\\geckodriver.exe')

在 Heroku 的那个位置你肯定不会有 geckodriver.exe。 Dynos 不运行 Windows,Heroku 默认不提供图形浏览器。

您必须添加适当的构建包,例如

并修改您的代码,这样您就不会硬编码特定可执行文件的路径。如果可执行文件在您的PATH 上,您应该能够执行类似的操作

driver = webdriver.Chrome()  # or
driver = webdriver.Firefox()

【讨论】:

  • 是否可以在没有 PATH 要求的情况下使用驱动程序。理想情况下,我希望能够控制最终用户系统的默认浏览器。仍在试图弄清楚那部分。
  • 我根据您的建议更改了我的代码。一切都在本地工作,但在部署时仍然存在问题。 OP已更新
  • @goryef,对不起,我之前错过了这个回复。如果您使用 Google Chrome buildpack,您似乎还需要 separate Chromedriver buildpack
猜你喜欢
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
相关资源
最近更新 更多