2017-01-11 82 views
1

以下は、私が取り組むべきhtmlです。CasperJSに情報を投稿する方法

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(); 

コンソールでWebページタイトルを印刷しませんでした。私はまたこれを試みた:

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

私はまたウェブページのタイトルを得なかった。私はかなり混乱し、私が間違っていたことはしませんでした。さらに、this.fillメソッドは、CasperJSの公式サイトの情報を投稿するための名前属性にのみ対応しているようです。あなたの助けが必要です。

答えて

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

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"); 
}); 
... 
関連する問題