1

CasperJS クイックスタート ガイドには、フォームへの入力に関する次の例があります。

casper.start('http://google.fr/', function() {
    // search for 'casperjs' from google form
    this.fill('form[action="/search"]', { q: 'casperjs' }, true);
});

casper.then(function() {
    // aggregate results for the 'casperjs' search
    links = this.evaluate(getLinks);
    // now search for 'phantomjs' by filling the form again
    this.fill('form[action="/search"]', { q: 'phantomjs' }, true);
});

true パラメーターが this.fill に渡されるため、フォームは自動的に送信され、新しいページが読み込まれるとすぐに次の casper.then 関数が呼び出されます。

しかし、SpookyJS を使用して Cucumber テストを作成する場合は、次のようになります。

    spooky.start("http://www.somepage.com");

    spooky.then(function () {
      this.fill("form", {username: "foo", password: "bar"}, true);
    });

    spooky.then(function () {
      this.echo(this.getPageContent());
      this.echo(this.getCurrentUrl());
    });

ページのコンテンツと URL を見ると、spooky.then 関数が呼び出されたときにまだフォーム ページにあると Spooky が言っていることがわかります。しかし、もう 1 つ spooky.then を追加すると、次のようになります。

    //Empty Spooky.then call so we can do what we want on the correct page
    this.spooky.then(function () {});

    this.spooky.then(function () {
      this.echo(this.getPageContent());
      this.echo(this.getCurrentUrl());
    });

突然、これは機能します。Casper を使用している間は必要ないのに、ここで余分な spooky.then 呼び出しが必要なのはなぜですか? これを Casper でテストしたところ、期待どおりに動作しましたが、Spooky では追加のthen呼び出しが必要です。

4

0 に答える 0