簡體   English   中英

從CasperJS JavaScript中的幫助文件調用函數

[英]Calling functions from helper file in casperjs javascript

我正在嘗試為casperjs腳本中的函數添加一個輔助文件,以將重復代碼保存在多個腳本中。

我最初的script.js文件正在使用並調用下面的函數並可以正常工作

function getTitles() {
  var titles = document.querySelectorAll('[itemprop="title"]');
  return [].map.call(titles, function (title) {
    return title.innerText;
  });
}

titles = this.evaluate(getTitles);
utils.dump(titles);

我在helpers.js中具有以下功能

exports.getTitles = function (selector) {
  this.evaluate(function () {
    var titles = document.querySelectorAll(selector);
    return [].map.call(titles, function (title) {
      return title.innerText;
    });
  })
}

並嘗試像這樣從script.js調用

titles = helpers.getTitles('[itemprop="title"]');
utils.dump(titles);

helpers文件中的其他功能正在運行,因此腳本應該可以訪問該代碼。

誰能告訴我我要去哪里錯了。 任何幫助表示贊賞。 先感謝您。

exports.getTitles看起來像Node.js使用的CommonJS語法...問題是CasperJS不是真正的Node模塊,因此,除非您使用SpookyJS ,否則這不是使用此庫管理模塊的標准方法。

CasperJS建立在PhantomJS之上,該PhantomJS提供了一種有用的方法injectJs來注入外部腳本。 在您的情況下,可以這樣組織代碼:

主腳本( script.js

phantom.injectJs('helpers.js');

// ------------------------------

var casper = require('casper').create();

casper.start('http://casperjs.org/');

casper.then(function () {
  console.log(helpers.foo, helpers.bar());
});

casper.run();

共享變量和函數( helpers.js

var helpers = {
  foo: 'Foo',
  bar: function () {
    return 'Bar';
  }
};

如果運行casperjs script.js ,則應該在終端中看到Foo Bar 在這里script.jshelpers.js必須在同一目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM