簡體   English   中英

有時使用CasperJS進行表單填充和捕獲會失敗

[英]Form fill and capture fail sometimes using CasperJS

我想填寫表格並捕獲生成的頁面。 所以我寫了一個CasperJS(這是我第一次使用CasperJS)將其歸檔到目標。 我閱讀了CasperJS API文檔,但仍不確定如何解決該問題。

下面是我的代碼:

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()的返回值可能不同?

當前網址為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中表示“報告”,因此您正在查詢頁面數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM