CasperJS没有评估jQuery方法

时间:2015-07-22 14:43:45

标签: javascript jquery testing casperjs

我将jQuery注入CasperJS:

phantom.injectJs('./utils/jquery/jquery-2.1.4.js');

但是当我尝试评估一些jQuery代码时,它会被忽略: 例如:

function dragNdropAlertToActivity() {
    var tt = casper.evaluate(function() {
        $('div[id^="scheduler-alert-grid"] table:contains(BLUE ALERT)')[0].simulate("drag-n-drop", {
            dragTarget: {
                dx: 71,
                dy: 71,
                interpolation: {
                    stepCount: 2
                }
            }
        });
        return "done";
    });
    casper.echo(tt);
};

调用方法如:casper.test.begin(function(){...})。 测试使用:casperjs test tests

执行

输出结果显示无法找到$

当我甚至编写一个简单的选择器时,为什么它会忽略jQuery?

1 个答案:

答案 0 :(得分:1)

phantom.injectJs()文档清楚地说明了(强调我的):

  

将指定文件中的外部脚本代码注入Phantom 外部 空间。

这意味着jQuery不会被注入到您尝试使用它的页面上下文中。

您可以使用手动方法(ref):

casper.then(function doSomething() {
    this.page.injectJs('relative/local/path/to/jquery.js');
    var tt = this.evaluate(function () {
        // ...
    });
});

或正常的CasperJS方法,它会在您访问的每个页面上注入脚本:

var casper = require("casper").create({
    clientScripts: ["relative/local/path/to/jquery.js"]
});

casper.options.clientScripts.push("relative/local/path/to/jquery.js");