我如何在Dalekjs终端保存

时间:2014-03-29 15:47:39

标签: save phantomjs interaction

如何保存'测试'的内容?对象打开后? 例如:

module.exports = {
  'Page title is correct': function (test) {
   test
       .open('http://google.com')
       // save content of test the HTML DOM
       .assert.title().is('Google', 'It has title')
       .done();
   }
};

或者可能与phantomJS直接互动 有可能的?

1 个答案:

答案 0 :(得分:1)

即使DalekJS的主要目的不是做这样的事情,技术上也可以这样做:

module.exports = {
  'Can store html': function (test) {
    test.open('http://google.com')
        .execute(function () {
          this.data('htmlData', window.document.getElementsByTagName('html')[0].outerHTML);
        })
        .log.message(function () {
           var data = test.data('htmlData');
           var fs = require('fs');
           fs.writeFileSync('nameOfTheFile.html', data);
           return data;
         })
        .assert.title().is('Google', 'It has title')
        .done();
  }
};

我们使用execute方法&使用data('key', 'value')存储方法将其传输到节点。

我们稍后在我们在节点上下文中运行的log.message方法中访问此数据。这使我们能够加载FileSystem模块&最后将捕获的html存储到文件中。