1

Magentoストアフロントに構築された内部Webサイトをテストしています。チェックアウトプロセス中、前のセクションに入力するまで、フォームの特定の部分が非表示になります(スタイル:なし)。これらの部分は通常スクリプトを壊しますが、非表示のフォームの最初の要素にwhen_presentを使用すると、この問題が解決しました。

ただし、[注文の送信]ボタンは、これらの同じ方法ではうまく機能しません。私は今日、リード開発者と協力して、このボタンと以前のフォームボタンの唯一の違いが、新しいページが読み込まれること(新しいURL、ブラウザーの新しい「完了」ステータス)であることを確認しました。

明確にするために:

  1. ユーザーが名前、住所、メールアドレスを入力し、[続行]をクリックします=> JSの「読み込み中」アニメーションが回転し、[一般]パネルがスライドして閉じ、[配送方法]パネルが展開されます。すべて同じページにあります。
  2. ユーザーが[注文の送信]をクリック=>JSの「読み込み中」のアニメーションが回転し、完了すると、ブラウザは検証可能な要素を含む/ success /(新しいページ)に進みます。
  3. 完了するのに十分な時間が与えられた場合(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つの異なる方法で失敗します。

  1. 予期されたありがとうメッセージが見つからなかったというメッセージで失敗します-エラー中に撮影されたスクリーンショットは、「読み込み中」のアニメーションが表示された、ありがとうページではなく、チェックアウトページを示しています。(「ご注文を受け付けました」を含む「チェックアウト」が必要です)
  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)。

4

2 に答える 2

2

待ち続ける必要があることを知る方法として、「読み込み中のアニメーション」(アニメーションGIFなど)の存在を使用することを検討しましたか?

私はこれを使用しました。これは、アニメーションがクライアント側のjavascriptによって表示されるかどうかに関係なく、単純なグラフィックファイルであるスクリプトの一部で使用されています。したがって、私の待機ループは、短いスリープと、アニメーションがまだ存在するかどうかを確認することで構成され、アニメーションが消えると終了します。

于 2011-08-12T06:14:41.297 に答える
1

検討する価値のあるオプションの1つは、非同期プロセスが実行されているかどうかを通知する、アプリケーション自体のフラグのテスト容易性機能を要求することです。私がテストしたAJAXを多用するWebアプリの1つでは、XRHまたはタイマーが開始されるたびに、AjaxStartedなどのbodyタグに属性を設定し、XHRまたはタイマーが最後に行うことはその属性をAjaxStoppedに設定することでした。そうすれば、どのような状況でも(複数の非同期プロセスが進行中の場合でも、次に進むべきかどうかを確認するために呼び出す簡単なメソッドが1つありました。

私たちが行ったことと私たちが試した他のいくつかの解決策の詳細をここで読むことができます:http: //testingjeff.wordpress.com/2009/10/21/relief-for-the-pain-of-waiting-for-ajax-elements-ページ上/

于 2011-08-12T17:28:21.243 に答える