带有Nodejs的Selenium-webdriver / phantomjs无法重启 - Linux

时间:2015-07-02 18:26:00

标签: linux node.js selenium phantomjs crontab

好吧,我正在用这种方式使用Nodejs用 Selenium-webdriver / phantomjs 抓取一个网站:

app.js

var express = require('express');
var By = require('selenium-webdriver').By;
var until = require('selenium-webdriver').until;
var phantomjs = require('selenium-webdriver/phantomjs');

var app = express();
var driver = new phantomjs.Driver();

app.get('/', function(req, res) {
    var user = req.query.user;
    var pass = req.query.pass;

    driver.get('https://www.xxxxxxxxxxxxx.com/'); // The site I'm requesting (:

    // remove read-only attribute
    driver.executeScript("document.getElementById('Password').removeAttribute('readonly')");
    // inputs
    driver.findElement(By.id('LoginName')).sendKeys(user);
    driver.findElement(By.id('Password')).sendKeys(pass);
    // button
    driver.findElement(By.name('Login')).click();
    // wait for the title
    driver.wait(until.titleIs('List'), 5000);

    driver.findElement(By.css('td[class*="nav"]')).getText().then(function(text) {
        console.log(text);
    });

    driver.quit();
});

var server = app.listen(5000, function() {
  var host = server.address().address
  var port = server.address().port
  console.log('Api listening at http://%s:%s', host, port)
});

如果我在终端上输入:

forever --pidFile /var/run/app.pid -a -l /var/log/node/app.log start /home/user/node-apps/myapp/app.js

然后在浏览器中输入:

http://127.0.0.1:5000/?user=a_user&pass=a_pass

脚本从网站正确返回答案(文本)。

但是我需要在重启服务器时可以使用这个应用程序,所以我编辑了我的crontab并添加了这个:

@reboot /usr/bin/sudo -u root -H /usr/local/bin/forever --pidFile /var/run/app.pid -a -l /var/log/node/app.log start -c /usr/local/bin/node /home/user/node-apps/myapp/app.js

但这一次,事情并没有按照他们的意愿行事。该脚本返回错误,说:

Error: Waiting for title to be "List" Wait timed out after 5006ms

但是,如果我通过输入:forever stop 1来停止应用,然后输入fisrt命令(我的意思是:forever --pidFile /var/run/app.pid -a -l /var/log/node/app.log start /home/user/node-apps/myapp/app.js),该应用再次有效。

当我重新启动服务器时,为什么应用程序不起作用的一些想法?

编辑:1

我尝试过这种方法从不需要身份验证的站点中获取一些数据,当我重新启动服务器时,该应用程序正常运行。而且我也尝试过其他需要身份验证的网站,我也遇到了同样的问题。

我的想法是问题出在需要身份验证的网站上。为什么?有什么想法吗?

0 个答案:

没有答案