我正在使用casperjs,以下是代码
var casper = require('casper').create();
var x = require('casper').selectXPath;
casper.start('http://google.co.in/', function() {
// search for 'casperjs' from google form
this.test.assertExists(x('//*[@type="text"]'), 'the element exists');
});
casper.run(function() {
// echo results in some pretty fashion
this.echo('').exit();
});
尽管有很多属性,但它无法找到属性类型为文本的任何元素。
这是我得到的输出
FAIL the element exists
# type: assertExists
# subject: false
# selector: {"type":"xpath","path":"//*[@type=\"text\"]"}
答案 0 :(得分:4)
谷歌众所周知不是机器人友好的。为此,您必须设置UserAgent。
这是在CasperJS-1.0.0和PhantomJS-1.8.0
下测试的var casper = require('casper').create({
pageSettings: {
userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.1349.2 Safari/537.21'
}
});
var x = require('casper').selectXPath;
casper.start('http://google.co.in/', function() {
// search for 'casperjs' from google form
this.test.assertExists(x('//*[@type="text"]'), 'the element exists');
this.test.assertExists({
type: 'xpath',
path: '//*[@type="text"]'
}, 'the element exists');
});
casper.run(function() {
// echo results in some pretty fashion
this.echo('').exit();
});
您可以访问http://whatsmyuseragent.com/以查看您当前的UserAgent是什么。
更新:删除了CasperJS-1.0.0代码,转而使用向后兼容代码。
答案 1 :(得分:2)
与hexid类似的答案,但要设置用户代理,您需要先启动casper(而不是相反):
var casper = require('casper').create({verbose: true});
var x = require('casper').selectXPath;
casper.start();
casper.userAgent('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.1349.2 Safari/537.21');
casper.thenOpen('http://google.co.in/', function() {
// search for 'casperjs' from google form
this.test.assertExists(x('//input[@type="text"]'), 'the element exists');
});
casper.run(function() {
// echo results in some pretty fashion
this.echo('').exit();
});
使用PhantomJs 1.7.0和Casper 1.0.0-RC4进行测试