我将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?
答案 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");