1

私は Casper JS を初めてfill()使用し、サイトにログインする方法に問題があります。デバッグ出力では、ログイン後に到達するはずのランディング ページの URL に到達します。ただし、空白のページに移動して中断します:

[debug] [phantom] Navigation requested: url=about:blank, type=Other, lock=true, isMainFrame=false

Facebookにログインするために以下のコードをテストしましたが、うまくいきました。また、以下の Casperjs コードの Phantomjs バージョンを使用して、以下の例のサイトに正常にログインしました。そのため、この問題は Casperjs の fill() メソッドを使用したログインに固有のようです。

1)これがhtmlです(セキュリティ上の理由から匿名にしました):

//login form
<form id="***id_form***" class="loginBox" method="post" action="https://***login_link***/">

// input login
<input id="IDToken1" type="text" value="" name="IDToken1">

// input password
<input id="IDToken2" type="password" name="IDToken2">

2)これが私のCasperjsコードです:

var start_url = 'https://***login_url***'

casper.start(start_url, function() {

    this.test.assertExists('form#***id_form***', 'form is found');
    this.fill('form#***id_form***', {
        'IDToken1': '***MY_ID***',
        'IDToken2': '***MY_PASSWORD***'
    }, true);
});

casper.run();

3)コンソール出力は次のとおりです(URLを非表示にしました):

[info] [phantom] Starting...

[info] [phantom] Running suite: 2 steps

[debug] [phantom] opening url: https://***login_url***, HTTP GET

[debug] [phantom] Navigation requested: url=https://***url***, type=Other, lock=true, isMainFrame=true

[debug] [phantom] Navigation requested: url=https://***url***, type=Other, lock=true, isMainFrame=true

[debug] [phantom] url changed to "https://***url***"

[debug] [phantom] Successfully injected Casper client-side utilities

[info] [phantom] Step 2/2 https://***url*** (HTTP 302)
PASS form is found

[info] [remote] attempting to fetch form element from selector: 'form#***id_form***'

[debug] [remote] Set "IDToken1" field value to ***My_ID***

[debug] [remote] Set "IDToken2" field value to ***My_PASSWORD***

[info] [remote] submitting form to https://***login_link***, HTTP POST

[info] [phantom] Step 2/2: done in 1211ms.

[debug] [phantom] Navigation requested: url=https://***login_link***, type=FormSubmitted, lock=true, isMainFrame=true

[debug] [phantom] Navigation requested: url=https://***url***, type=FormSubmitted, lock=true, isMainFrame=true

[debug] [phantom] Navigation requested: url=http://***url***, type=FormSubmitted, lock=true, isMainFrame=true

[debug] [phantom] url changed to "http://***url***"

[debug] [phantom] Successfully injected Casper client-side utilities

[debug] [phantom] Navigation requested: url=https://***url***, type=Other, lock=true, isMainFrame=true

[debug] [phantom] Navigation requested: url=https://***url***, type=Other, lock=true, isMainFrame=true

[debug] [phantom] Navigation requested: url=https://***landing_page***, type=Other, lock=true, isMainFrame=true

[debug] [phantom] url changed to "https://***landing_page***"

[debug] [phantom] Navigation requested: url=https://***url***, type=Other, lock=true, isMainFrame=false

[debug] [phantom] Navigation requested: url=about:blank, type=Other, lock=true, isMainFrame=false

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

次のことを試してください。

casper.start(start_url, function() {
    this.waitForSelector('form#***id_form***', function() {
        this.fill('form#***id_form***', {
            'IDToken1': '***MY_ID***',
            'IDToken2': '***MY_PASSWORD***'
        }, true);
    }
});

casper.then(function() {
   ...
}
于 2014-11-08T11:35:57.097 に答える