如何使用node.js(Firefox或Chrome)在Heroku上运行Selenium Webdriver
我想在Heroku上使用Selenium与Firefox或其他能够显示视频的浏览器。不幸的是,PhantomJS无法工作,因为浏览器无法播放视频 我已经使用以下构建包在firefox上进行了尝试: 通过使用这些构建包使用chrome: 但我总是在heroku日志中看到:如何使用node.js(Firefox或Chrome)在Heroku上运行Selenium Webdriver,node.js,selenium,firefox,heroku,browser,Node.js,Selenium,Firefox,Heroku,Browser,我想在Heroku上使用Selenium与Firefox或其他能够显示视频的浏览器。不幸的是,PhantomJS无法工作,因为浏览器无法播放视频 我已经使用以下构建包在firefox上进行了尝试: 通过使用这些构建包使用chrome: 但我总是在heroku日志中看到: 2019-09-20T15:04:47.000000+00:00 app[api]: Build succeeded 2019-09-20T15:04:49.118915+00:00 app[web.1]: Error: Ser
2019-09-20T15:04:47.000000+00:00 app[api]: Build succeeded
2019-09-20T15:04:49.118915+00:00 app[web.1]: Error: Server terminated early with status 2
2019-09-20T15:04:49.118934+00:00 app[web.1]: at earlyTermination.catch.e (/app/node_modules/selenium-webdriver/remote/index.js:251:52)
2019-09-20T15:04:49.118936+00:00 app[web.1]: at process._tickCallback (internal/process/next_tick.js:68:7)
有没有办法在heroku上使用selenium和可以显示视频格式的浏览器,比如youtube上的视频
我还没有找到适合我的解决方案
更新
如果我尝试此操作,将显示相同的错误:
const chrome = require('selenium-webdriver/chrome');
let options = new chrome.Options();
options.addArguments('--headless');
options.addArguments('--disable-gpu');
options.addArguments('--no-sandbox');
let driver = new webdriver.Builder()
.forBrowser('chrome')
.setChromeOptions(options)
.build();
driver.get('http://www.google.com').catch(err => console.log(err));
我的选择,也许会有帮助:
const screen = {
width: 1920,
height: 1080
};
let options = new chrome.Options();
//Below arguments are critical for Heroku deployment
options.addArguments("--headless");
options.addArguments("--disable-gpu");
options.addArguments("--no-sandbox");
options.windowSize(screen);
我认为窗口大小是必需的,否则您将模拟一个无边界的窗口…我尝试了这个方法,它成功了 注意:我使用的是React、Express和Selenium与chrome 步骤1:创建一个新的Heroku应用程序 步骤2:从终端使用heroku登录登录heroku 步骤3:登录后,将cd刻录到项目目录,并将其设置为heroku应用程序的远程。heroku git:remote-a YOUR-heroku-APP-NAME 步骤4:在终端中运行以下所有命令
heroku buildpacks:add https://github.com/heroku/heroku-buildpack-chromedriver
heroku buildpacks:add https://github.com/heroku/heroku-buildpack-google-chrome
heroku config:set CHROME_DRIVER_PATH=/app/.chromedriver/bin/chromedriver
heroku config:set CHROME_BINARY_PATH=/app/.apt/opt/google/chrome/chrome
步骤5:从浏览器登录heroku并导航到应用程序。转到“设置”并在“构建包”下添加heroku/NodeJ
步骤6:这就是我的index.js的样子。注意:我的express入口点在root dir/server/index.js中,我的react文件在root dir/client中/
步骤7如果您正在根目录/中的package.json中使用React:Now,请添加以下内容
"scripts": {
...
"heroku-postbuild": "cd client && npm install && npm run build"
}
步骤8如果您在根目录/client/i:package.json中使用react:inside your package.json for react app,请添加以下行:
"proxy": "http://localhost:5000/",
步骤8:如果您正在根目录/client/src/中使用react:inside,请创建一个名为setupProxy.js的新文件,并粘贴以下代码:
const proxy = require("http-proxy-middleware");
module.exports = function(app) {
app.use(proxy('/api', { target: `http://localhost:${process.env.PORT || 5000}/`}));
};
步骤9:现在,您已经为部署做好了准备。确保已安装以下软件包:express、selenium webdriver和chromedriver
第十步:现在把它推到heroku
git add .
git commit -m "my app"
git push heroku master
关于这个问题的投票结果可能重复☝️ 使用PhantomJS,但是另一个使用Chrome和Chromedriver。我已经用这个解决方案尝试过了,但是我得到了几乎相同的问题。几乎相同的问题都没有足够的信息。请确切地告诉我们您做了什么,以及您看到了哪些错误。看,我编辑了我的原始帖子。我得到了完全相同的错误。
git add .
git commit -m "my app"
git push heroku master