2014-01-08 28 views
0

我想填写表单并捕获生成的页面。所以我写了一个CasperJS(这是我第一次使用CasperJS)来存档到目标。我读了CasperJS API文档,但仍不确定如何解决这个问题。有时使用CasperJS填充并捕获失败

下面是我的代码:

var casper = require('casper').create(); 
var filename = casper.cli.get(0); 
var myear = casper.cli.get(1); 
var mmon = casper.cli.get(2); 
var stk_no = casper.cli.get(3); 

casper.start('http://www.twse.com.tw/en/trading/exchange/STOCK_DAY/STOCK_DAYMAIN.php', function() { 
     this.fill("form[name='date_form']", { 
       'myear' : myear, 
       'mmon' : mmon, 
       'STK_NO': stk_no 
     },true); 
}); 

casper.then(function() { 
     this.capture(filename); 
     this.echo("Saved screenshot of " + (this.getCurrentUrl()) + " to " + filename); 

}); 

casper.run(); 

我的命令是一样

casperjs test.js picture.png 2013 12 8271 

轻微伤图片文件将会生成,事实证明为失败:

Saved screenshot of http://www.twse.com.tw/en/trading/exchange/STOCK_DAY/STOCK_DAY.php to picture.png 

有时一个图片文件将被生成并且事实证明是成功的:

Saved screenshot of http://www.twse.com.tw/en/trading/exchange/STOCK_DAY/genpage/Report201312/201312_F3_1_8_8271.php?STK_NO=8271&myear=2013&mmon=12 to picture.png 

为什么有时它工作并给予捕获但有时会失败?为什么this.getCurrentUrl()的返回值可能不同?

回答

0

在当前URL是http://www.twse.com.tw/en/trading/exchange/STOCK_DAY/STOCK_DAY.php,意味着你被阻挡在开始页面,等待重定向,更改

casper.then(function() { 
     this.capture(filename); 
     this.echo("Saved screenshot of " + (this.getCurrentUrl()) + " to " + filename); 

}); 

到:在

casper.waitForUrl(/Report/, function() { 
     this.capture(filename); 
     this.echo("Saved screenshot of " + (this.getCurrentUrl()) + " to " + filename); 

}); 

/Report/手段“报告”您的当前的URL,所以你在查询的页面数据。

+0

谢谢!我知道了。 –