我需要从页面获取一些内容,但如果我使用fillSelectors()
,则内容不会加载。也许我需要使用evaluate()
,但我不想要在哪里以及如何使用。
var casper = require('casper').create()
casper.start('http://console.matomycontentnetwork.com/', function() {
this.fillSelectors('form#login-form', {
'input[name="username"]': 'jpost',
'input[name="password"]': 'matomy123'
}, true);
this.clickLabel("Sign In", 'button');
});
casper.then(function() {
var start_date = '09/01/2015';
var end_date = '10/07/2015';
this.evaluate(function() {
$('#report-range').val('custom').change();
});
this.fillSelectors('form#report-form', {
'input[name="report[start_date]"]': start_date,
'input[name="report[end_date]"]': end_date,
'input[id="grouping-option-3"]' : true,
'input[id="grouping-option-2"]' : true,
'input[id="grouping-option-4"]' : true
}, true);
this.click("#run-report");
this.wait(10000, function () {
this.echo('.geo_country_name.innerText: ' + this.evaluate(function() {
return document.querySelector('.geo_country_name').innerText;
}));
this.echo('td.alignright:nth-child(5).innerText: ' + this.evaluate(function() {
return document.querySelector('td.alignright:nth-child(5)').innerText;
}));
});
});
casper.run();
你可以帮忙吗?
答案 0 :(得分:0)
以下是一些猜测:
如果您想点击某个按钮提交表单,请不要自动提交表单。删除最后一个参数:
impl
PhantomJS不支持this.fillSelectors('form#report-form', {
'input[name="report[start_date]"]': start_date,
'input[name="report[end_date]"]': end_date,
'input[id="grouping-option-3"]' : true,
'input[id="grouping-option-2"]' : true,
'input[id="grouping-option-4"]' : true
});
。您需要使用element.innerText
。