Zombiejs空HTML

时间:2014-11-24 15:02:08

标签: javascript node.js openshift zombie.js

我正在将一个Zombiejs应用程序部署到Openshift,但Zombie似乎无法获取HTML。

我有一个对象(称为扑克)维护无头浏览器并使用它做事。其中一种方法称为init,登录网站并返回“初始化”浏览器。

Poker.prototype.init = function (email, password, ip) {
  var self = this;
  var browser;

  // Have to use the ip that Openshift provides
  // See SO question http://goo.gl/n2TfMC
  if (ip) {
    browser = Zombie.create({
      'localAddress': ip
    });
  } else {
    browser = Zombie.create();
  }

  return new Promise(function (resolve, reject) {
    browser
      .visit('http://some.login/page')
      .then(function () {
        // Some debugging stuff :p
        console.log('body: ');
        console.log(browser.html('body'));

        // Fill in the credentials
        browser.fill('email', email);
        browser.fill('password', password);
        return browser.pressButton('Log In');
      })
      .done(function() {
        // Logged in, new page loaded
        // Check if login was successful
        var title = browser.text('title');
        console.log(title);
      });
  });
}

打印{@ 1}}后控制台仍为空,anden Zombie尝试填写电子邮件地址,我收到此错误:

body:

在我看到这个之后,我尝试通过Zombie Possibly unhandled TypeError: Cannot use 'in' operator to search for 'compareDocumentPosition' in null at /var/lib/openshift/[app-id]/app-root/runtime/repo/node_modules/zombie/node_modules/jsdom/node_modules/nwmatcher/src/nwmatcher-noqsa.js:267:43 at module.exports (/var/lib/openshift/[app-id]/app-root/runtime/repo/node_modules/zombie/node_modules/jsdom/node_modules/nwmatcher/src/nwmatcher-noqsa.js:37:7) at addNwmatcher (/var/lib/openshift/[app-id]/app-root/runtime/repo/node_modules/zombie/node_modules/jsdom/lib/jsdom/selectors/index.js:6:27) at HTMLDocument.<anonymous> (/var/lib/openshift/[app-id]/app-root/runtime/repo/node_modules/zombie/node_modules/jsdom/lib/jsdom/selectors/index.js:18:29) at HTMLDocument.querySelectorAll (/var/lib/openshift/[app-id]/app-root/runtime/repo/node_modules/zombie/node_modules/jsdom/lib/jsdom/level1/core.js:63:53) at Browser.queryAll (/var/lib/openshift/[app-id]/app-root/runtime/repo/node_modules/zombie/lib/zombie/browser.js:348:26) at Browser.field (/var/lib/openshift/[app-id]/app-root/runtime/repo/node_modules/zombie/lib/zombie/browser.js:591:17) at Browser._findOption (/var/lib/openshift/[app-id]/app-root/runtime/repo/node_modules/zombie/lib/zombie/browser.js:662:18) at Browser.select (/var/lib/openshift/[app-id]/app-root/runtime/repo/node_modules/zombie/lib/zombie/browser.js:692:19) at /var/lib/openshift/[app-id]/app-root/runtime/repo/poker.js:61:17 另一个页面(Google),但它也返回了空HTML。

我看了一些关于visit错误的其他StackOverflow问题,但我认为我所遇到的问题与Openshift上的部署有关,而不是我正在访问的页面的HTML问题

我正在使用Node.js v0.10.25和Zombie v2.2.1。

2 个答案:

答案 0 :(得分:1)

可以是CORS问题吗? .login不是有效的TLD,规则因TLD而异。

答案 1 :(得分:0)

您确定变量&#34;浏览器&#34;你正在尝试使用的是一个Object,如果变量是一个字符串就会发生错误。