Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用node.js(Firefox或Chrome)在Heroku上运行Selenium Webdriver_Node.js_Selenium_Firefox_Heroku_Browser - Fatal编程技术网

如何使用node.js(Firefox或Chrome)在Heroku上运行Selenium Webdriver

如何使用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

我想在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: 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