我有一个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()
但是运行网络版本时仍然无法打开浏览器。 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
非常感谢任何指导。
答案 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'])