CasperJS Can't find variable $

前端 未结 1 939
無奈伤痛
無奈伤痛 2021-01-13 01:51

I\'m trying to inject jQuery in my test but I get the following error:

ReferenceError: Can\'t find variable: $

It is a ruby on rails application I\'m trying

相关标签:
1条回答
  • 2021-01-13 02:05

    From the documentation it looks like you need to to use evaluate() to get a reference to the page that is loaded

    Note The concept behind this method is probably the most difficult to understand when discovering CasperJS. As a reminder, think of the evaluate() method as a gate between the CasperJS environment and the one of the page you have opened; everytime you pass a closure to evaluate(), you're entering the page and execute code as if you were using the browser console.

    casper.then(function() {
        var fridges =  casper.evaluate(function(){
            // In here, the context of execution (global) is the same
            // as if you were at the console for the loaded page
            return $('a[href^="/fridges/"]');
        });
        this.test.assert(fridges.length == 3, 'More or less than 3 fridge links shown');
    });
    

    However, note that you can only return simple objects , therefore you cannot access jQuery objects outside of the evaluate (that is, you can't return a JS object), so you'd have to return just what's required to be tested, like the following

    casper.then(function() {
        var fridgeCount = casper.evaluate(function(){
            // In here, the context of execution (global) is the same
            // as if you were at the console for the loaded page
            return $('a[href^="/fridges/"]').length;
        });
        this.test.assert(fridgeCount === 3, 'More or less than 3 fridge links shown');
    });    
    
    0 讨论(0)
提交回复
热议问题