Magentoストアフロントに構築された内部Webサイトをテストしています。チェックアウトプロセス中、前のセクションに入力するまで、フォームの特定の部分が非表示になります(スタイル:なし)。これらの部分は通常スクリプトを壊しますが、非表示のフォームの最初の要素にwhen_presentを使用すると、この問題が解決しました。
ただし、[注文の送信]ボタンは、これらの同じ方法ではうまく機能しません。私は今日、リード開発者と協力して、このボタンと以前のフォームボタンの唯一の違いが、新しいページが読み込まれること(新しいURL、ブラウザーの新しい「完了」ステータス)であることを確認しました。
明確にするために:
- ユーザーが名前、住所、メールアドレスを入力し、[続行]をクリックします=> JSの「読み込み中」アニメーションが回転し、[一般]パネルがスライドして閉じ、[配送方法]パネルが展開されます。すべて同じページにあります。
- ユーザーが[注文の送信]をクリック=>JSの「読み込み中」のアニメーションが回転し、完了すると、ブラウザは検証可能な要素を含む/ success /(新しいページ)に進みます。
- 完了するのに十分な時間が与えられた場合(sleepステートメント)、テストは合格します。
フォームのやや疑似コードと[送信]クリックは次のとおりです。
def complete_form(data = {})
data = DEFAULT_DATA.merge (data)
select_guest
continue_button.click #proceed to billing panel
enter_billing_and_shipping_info(data)
enter_additional_information(data)
place_order_button.when_present.click #submit form
#sleep 2 #this succeeds, but is undesirable
thank_you_message.wait_until_present #I do not actually appear to wait until anything is present
end #
def enter_billing_and_shipping_info(data)
billing_first_name.when_present.value = data['First Name'] #I work!
billing_last_name.value = data['Last Name']
#more fields
end #
手順から:
thank_you_message.should include("Yippee")
スクリプトは、サイトの応答速度に応じて2つの異なる方法で失敗します。
- 予期されたありがとうメッセージが見つからなかったというメッセージで失敗します-エラー中に撮影されたスクリーンショットは、「読み込み中」のアニメーションが表示された、ありがとうページではなく、チェックアウトページを示しています。(「ご注文を受け付けました」を含む「チェックアウト」が必要です)
- 「要素がキャッシュに見つかりません」エラーで失敗します-この場合のスクリーンショットには、探しているテキストを含むありがとうページが表示されます
Watir :: Wait.untilなどの他のメソッド、または{}が実行するまで、同じ動作が発生しました。
- Windows764ビットおよびWindowsXP32ビット
- ルビー1.9.2p290(2011-07-09)[i386-mingw32]
- きゅうり(1.0.2)
- rspec(1.3.2)
- watir-webdriver(0.3.0)
アップデート8-15 試行されたソリューション#1:
place_order_button.when_present.click #complete form
ajax_submit_image.wait_while_present
同じ最終結果-成功メッセージが見つからずにスクリプトが終了します。スクリーンショットは、スピン中のAjax読み込み画像を示しています。この方法と前の方法の両方が機能する必要がありますが、効果がないようです。スクリプト内のロケーターを使用して画像にアクセスできることを確認しました(img srcmatch)。