如何在CasperJS中发布信息

时间:2017-01-11 03:44:47

标签: casperjs

以下是我想要处理的HTML。

enter image description here

我想发布查询并查看该城市的天气预报。我尝试了我的代码:

var casper = require('casper').create();
var utils = require('utils');

casper.start('http://www.weather.com.cn/weather1d/101210101.shtml'); 
casper.waitForSelector('input', function()
{
    this.fillXPath('div.search clearfix',{'//input[@id="txtZip"]':'shijiazhuang'},true);
}); 
casper.then(function()
{   
    utils.dump(this.getTitle());
}); 
casper.run();

它没有在控制台上打印网页标题。我也试过这个:

casper.waitForSelector('input', function()
{
    this.fillSelectors('div.search clearfix',{'input[id="txtZip"]':'shijiazhuang'},true);
}); 
}
);

我也没有得到任何网页标题。我很困惑,不是我做错了。此外,似乎 this.fill 方法只处理名称属性以在CasperJS的官方网站上发布信息。我需要你的帮助。

2 个答案:

答案 0 :(得分:1)

CasperJS脚本:

var casper = require('casper').create(), utils = require('utils');
    casper

.start('http://www.weather.com.cn/weather1d/101210101.shtml',function(){
    this
         .wait(3000,function(){
    this.capture('search.png');
    utils.dump(this.getTitle());
})
         .evaluate(function(){
            document.getElementById('txtZip').value='shijiazhuang';
            document.querySelector('input[type="button"]').click();
       })
})
    .run();

结果:

"【石家庄天气】石家庄今天天气预报,今天,今天天气,7天,15天天气预报,天气预报一周,天气预报15天查询"

search.png

答案 1 :(得分:0)

你做得对,你只需稍微修改你的脚本。
只需修改输入字段的选择器实际上似乎不起作用,那么你应该得到正确的结果。
“this.fillXPath”仅填写表单,不发布。

...
// fill the form
casper.waitForSelector('input', function() {
    this.fillXPath('#txtZip', {
        '//input[@id="txtZip"]': 'shijiazhuang'
    }, true);
});
// trigger - post the form
casper.then(function() {
    this.click('#btnZip');
});
// i can't speak chinese - wait for some specific change on this page
casper.wait(5000);
// take a screenshot of it
casper.then(function() {
    this.capture("shijiazhuang_weather.png");
});
...