0

PhantomJS を使用して GWT の単一ページ Web アプリをテストしたいと考えています。

  1. ページをロードします
  2. ログイン入力フィールドに入力します
  3. ログインをクリック
  4. タイムアウト内に、ページ上の要素をクエリし、コンソールに出力します
  5. 10秒後に終了

問題は、ステップ 3. によって本文全体が複数回実行されることです。つまり、page.open() 関数の本文内の console.log ステートメントが複数回出力されます。

誰が問題が何であるか知っていますか?body を 1 回だけ実行するにはどうすればよいでしょうか。

この動作を生成するコードは次のとおりです。

var page = require('webpage').create();

page.onConsoleMessage = function (msg) {
    console.log(msg);
};

page.open("http://gwt-web-app.com#bookmark", function (status) {

    page.evaluate(function () {
        console.log('start login');
        document.querySelector('input#username').value = 'user';
        document.querySelector('input#password').value = 'pass';
        document.querySelector('button').click();   // causes body to be executed multiple times
        console.log('end login');
    });

    window.setTimeout(function() {
        page.evaluate(function() {
            console.log('start element query');
            // query elements, and print using console.log
            console.log('end element query')
        });
    }, 4000);

    window.setTimeout(function () {
        console.log('exit');
        phantom.exit();
    }, 10000);

});

出力は次のとおりです (実行後phantomjs test_app.js)。

start login
end login
start login
end login
start login
end login
start login
end login
start login
end login
start login
end login
start login
end login
start login
end login
start login
end login
start login
end login
start login
end login
start element query
end element query
start login
end login
start login
end login
start login
end login
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
start element query
end element query
start login
end login
exit
4

0 に答える 0