CasperJS - 使用jQuery。 ReferenceError:找不到变量:jQuery / $

时间:2014-01-10 19:28:08

标签: javascript jquery cmd phantomjs casperjs

我在CasperJS中编写涉及jQuery的代码。有可能,有人能指出我在包含jQuery时犯的错误吗? (经过45分钟的搜索,我开始认为这是一个本地问题。)

我尝试了以下两种方法:

casper.page.injectJs('C:\sweeps\jquery-1.10.2.min.js');

var casper = require('casper').create({
clientScripts: ["C:\sweeps\jquery-1.10.2.min.js"]
});

代码:

// sample.js
var casper = require('casper').create();

var login = "some username"; 
var password = "some password";

casper.start('https://www.paypal.com/us/home', function() {
    this.fillXPath('form.login', {
        '//input[@name="login_email"]':    login,
        '//input[@name="login_password"]':    password,
    }, true);
});

casper.page.injectJs('C:\sweeps\jquery-1.10.2.min.js');

$("input[name='submit.x']").click();

   setTimeout(function(){ 
   setTimeout(function(){ 

casper.run(function() {

this.captureSelector('example2.png', '#page');

    this.echo('Done.').exit();

});

}, 30000); }, 1);

输出:

ReferenceError: Can't find cariable: jQuery
C:/sweeps/test2.js:21

当“jQuery”切换为“$”时,会出现同样的结果。

编辑:我也试过相对路径。

我的参考是:Can I use jQuery with CasperJS?

2 个答案:

答案 0 :(得分:1)

阅读此Casper#evaluate()

  

这种方法背后的概念可能是发现CasperJS时最难理解的。提醒一下,将evaluate()方法视为CasperJS环境与您打开的页面之间的门;每当你将一个闭包传递给evaluate()时,你就像进入浏览器控制台一样进入页面并执行代码。

casper.evaluate(function() {
    $("input[name='submit.x']").click();
});

您需要像使用浏览器一样使用jQuery选择器。

答案 1 :(得分:0)

您的javascript文件路径应该是相对于HTML文件的URI,而不是文件系统路径。假设您的文件位于c:\ sweepstakes文件夹中,请尝试

var casper = require('casper').create({
  clientScripts: ["jquery-1.10.2.min.js"]
});

此外,使用浏览器的网络/开发工具查看您的jQuery库是否正在下载。