【问题标题】:casperJS Can't find variable : $casperJS找不到变量:$
【发布时间】:2013-09-29 10:07:06
【问题描述】:

我正在尝试使用 this.evaluate() 调用在另一个模块中定义的函数。

sn-p(调用函数)的代码是:

this.waitFor(function check() {
    var re = this.evaluate(universe.answer(couponElement, url));
    if (re != 'no' & re!='yes' & re!=null) {
        couponObj.push(re);

而函数定义所在的模块是这样的:

var require = patchRequire(require);

var utils = require('utils');
exports.answer = function(couponElement, url) {
    var lblInvalidCoupon = 'lblInvalidCoupon';
    var tolTipCouponinner='tolTipCouponinner';
    var txtFCCoupondisocunt = 'txtFCCoupondisocunt';
    var btnRemoveFCCoupon = 'btnRemoveFCCoupon';

    var check = $('#txtCouponCode').css('backgroundImage');
    if (check.indexOf('ajax-loader.gif')>-1){        
        return 'no';
    } else {
        if (document.getElementById(lblInvalidCoupon)!=null){

基本上,我想使用this.evaluate 调用该函数,但无法这样做。

【问题讨论】:

标签: module casperjs evaluate


【解决方案1】:

首先,尝试使用最简单的evaluate:remote.message 事件从页面捕获console.log

casper.on("remote.message", function(msg) { 
    console.log("[page] " + msg); 
});

this.evaluate(function () { 
    console.log("Hi phantomworld! I am hello-ing from remote page!"); 
});

接下来,检查 jQuery 是否存在:

this.evaluate(function () { 
    console.log(typeof jQuery); 
});

如果它说,[page] function,jQuery is 出现在页面中。你需要挖掘更多......

如果没有,注入它:

var casper = require('casper').create({
    clientScripts:  [
        'includes/jquery.js'
    ]
});     

【讨论】:

    【解决方案2】:

    您实际上并未将answer 函数传递给casper.evaluate,而是调用了它。问题是answer 没有在页面上下文中执行,因此没有定义$。在页面上下文中执行函数的casper.evaluate 被沙盒化。它不能使用外部定义的变量。传递的函数必须是自包含的。

    为了解决这个问题,answer 使用的参数可以作为附加参数传递给casper.evaluate

    换行

    var re = this.evaluate(universe.answer(couponElement, url));
    

    var re = this.evaluate(universe.answer, couponElement, url);
    

    如果页面中没有 JQuery,您需要关注 sudipto's answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      相关资源
      最近更新 更多