网站在h1
标记中显示访问者的IP地址id = "ip"
当我使用return document.querySelector('#ip').innerText;
时,它会显示正确的IP地址,一切都很顺利。
但是,当我使用return $('#ip').text();
时,会显示null
任何想法为什么?
var casper = require('casper').create();
casper.start("http://mikeyaworski.com/IP", function() {
var ip = this.evaluate(function() {
// return document.querySelector('#ip').innerText; // does work
return $('#ip').text(); // doesn't work, but it should
});
this.echo("\nYour public IP address is: " + ip);
});
casper.run();
答案 0 :(得分:1)
我最终将jQuery从here下载到我计算机上的某个位置。
然后我关注了这个主题的documentation,它似乎有用(奇怪的是,因为在过去,我不需要遵循这些“规则”)。
我的代码最终是这样的:
var casper = require('casper').create();
casper.start("http://mikeyaworski.com/IP", function() {
// this is the changed part
casper.page.injectJs('path/to/jquery-1.11.0.js');
var ip = this.evaluate(function() {
// return document.querySelector('#ip').innerText;
return $('#ip').text();
});
this.echo("\nYour public IP address is: " + ip);
});
casper.run();
这也很有效:
// this is the changed part
var casper = require('casper').create({
clientScripts: ["path/to/jquery-1.11.0.js"]
});
casper.start("http://mikeyaworski.com/IP", function() {
var ip = this.evaluate(function() {
// return document.querySelector('#ip').innerText;
return $('#ip').text();
});
this.echo("\nYour public IP address is: " + ip);
});
casper.run();
然而,我仍然觉得奇怪的是,在this other script上,我使用jQuery就好了,无需将其注入任何地方,甚至将其下载到我的计算机上。我想了解更多相关信息。
答案 1 :(得分:0)
显然,页面上jQuery的早期版本可能会与您在测试中使用的jQuery版本发生冲突。如果您升级版本,两个jQuerys不会发生冲突。这与其他线程有关:
CasperJS click event having AJAX call
还有其他方法可以在不更改jQuery版本的情况下修复它。