1

私のサイトには次の設定があります。

ログイン ページで資格情報を入力すると、ユーザーを検証して適切なホームページにリダイレクトする 2 番目のページ (通常は画面出力は生成されません) に移動します。

私のステップ定義は、次の 3 つのステップで構成されています。

  1. 初期ログインページをロードします。
  2. 資格情報を入力して送信します。
  3. ホームページで作成したことを (ページ タイトルをチェックして) 確認します。

私の最初の一歩は見事に合格しました。

私の 2 番目のステップは成功したと主張しています。

私の 3 番目のステップは失敗します。

レビューの結果、2 番目のステップは、公式には失敗していませんが、本来の動作をしなかったことが原因であることがわかりました。ゾンビが検証ページでスタックしました。最初はリダイレクトがないだけだと思っていましたが、検証ページでは何も実行されていないようです。ページ全体をコメントアウトして、ページの上部に「Hello」の出力を配置するだけです。もし私の browser.html(); 信じられますが、それはわかりません。私は持っているので、私は2番目のページにたどり着いたことを知っています

console.log("\n" + browser.location.href);

2 番目のページの URL が表示されます。

私はそれから持っています

console.log(browser.html());

空です。

私も持っています:

browser.wait(10000,callback);

事前に処理時間を与えるためですが、役に立ちません。

関連する可能性のある情報:

これは ColdFusion サイトです。ログインページを最初にロードしているので、ゾンビがCFの概念を処理していることは知っていますが、実際のCF処理はあまり行われていません。

DBアクセスが発生しています。ゾンビが通常のブラウザーのようにアクセスしている場合、違いはありませんが、存在します。すべてをコメントアウトしても機能しないので、実際に関係があるとは思えません。

これは、ログイン ステップのスクリプト部分です。これに間違った方法でアプローチしている場合は、アドバイスしてください。


  this.When(/^I input my credentials$/, function(callback) {

    browser.fill("login", "myusername").fill("password", "mypassword");

    browser.document.forms[0].submit();

    // Put in here to account for redirect time it will take to get past validation page to actual home page

    browser.wait(10000,callback);

    callback();
    });

その他の情報が必要な場合は、お知らせください。これを機能させるために、何か助けていただければ幸いです。

4

1 に答える 1

0

問題を完全に理解しているかどうかはわかりませんが、非同期呼び出しの処理方法に問題があるようです。いずれにせよ、このようなことをする必要はまったくありませんbrowser.wait。次のようなことを試してください。

this.When(/^I input my credentials$/, function(callback) {
    browser
        .fill("login", "myusername")
        .fill("password", "mypassword")
        .pressButton("#selectorForYourButton", function (err) {
            // Check for errors or any other behaviour this test is actually about
            callback();
        });
});

第一に、このpressButton方法は、実際のブラウザー操作のテストに近いため、好ましい方法です。しかし、より重要なcallback()ことは、ボタンを押すことによって発生したすべてのイベントが解決された後にのみ実行されることです。

于 2013-06-20T05:22:10.670 に答える