Selenium Web驱动程序无法在Heroku上打开浏览器

时间:2019-08-06 16:05:48

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

我有一个Node.js应用程序,该应用程序带有使用Selenium Webdriver的Python脚本。 当我在本地运行它时,一切都按预期运行。部署到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:服务器错误-服务器遇到意外情况,阻止其满足请求。

更新: 根据克里斯的建议,我将代码更新为:

browser = webdriver.Chrome()

并添加了google-chrome buildpack。 enter image description here

但是运行网络版本时仍然无法打开浏览器。 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

非常感谢任何指导。

1 个答案:

答案 0 :(得分:0)

geckodriver.exe

您肯定在Heroku上的那个位置没有PATH。 Dynos不运行Windows,默认情况下,Heroku不提供图形浏览器。

您必须添加适当的buildpack,例如

并修改您的代码,这样就不会硬编码特定可执行文件的路径。如果可执行文件在您的driver = webdriver.Chrome() # or driver = webdriver.Firefox() 上,您应该可以执行类似的操作

from sklearn.feature_extraction import FeatureHasher

# n_feature: number of unique values in the feature(s)
# input_type should be passed as 'string' to be compatible to pandas DataFrames
feature_hasher = FeatureHasher(n_features=5000, input_type='string')
df['COLUMN_NAME'] = feature_hasher.transform(df['COLUMN_NAME'])