2

ハイパーリンクをクリックするコード化された UI テストを実行しています。

Web ページにアクセスできませんでした。ページが更新中の場合は、ページが更新されるまで待ってからアクションを実行してください。

テストを進めているときにこれを取得したので、このリンクをクリックしようとしている時点で、ページが更新されていないことがわかります。UITest エラー ログを掘り下げると、ブラウザーの更新エラーがスローされる前に、毎回次の行が表示されます。

E, 6468, 13, 2013/10/18, 15:08:47.406, 271797587803, QTAgent32_40.exe, IEDOM: html ノードの EnsureValid が失敗しました: A, 52

このリンクの uitest マッピングを比較しましたが、プロパティはすべて同一で、ページの html も同一です。IE10、KB2879017 で実行しています。VS2012 4 RC。

これが起こる原因は何ですか?

注: WaitForControlReady() は、これが発生するのを止めるために何もしません。また、ハードコードされた Playback.Wait() もここでは役に立ちません。

コードの行に失敗しました。これは最初は機能しますが、テストで 2 回目に実行されると機能しません。

this.UIWindow.UIDocument.UIHomeHyperlink.WaitForControlReady();
Mouse.Click(this.UIWindow.UIDocument.UIHomeHyperlink);

UIHomeHyperlink マップされたコントロールに使用されている検索プロパティは、これらの行が 2 回目に実行されるときとまったく同じであることに注意してください。Mouse.Click() の実行は、VS2012 で「Web ページが利用できません」というエラーがスローされた場合です。

4

2 に答える 2

1

ブレーンストーミングと試行錯誤の結果、マップされたコントロールはページ上で見つかった後もプロパティを保持しているという結論に達しました。何らかの理由で、これらのプロパティは、2 回目のページ プロパティと正確に一致しませんでした。

したがって、この問題の「解決策」は、ページに入るたびにマップされた UI___Window 全体を強制的に新しくすることでした。コード化された UI は、デザイナー ファイルでコントロールが null かどうかを毎回確認することでこれを防ぎます。null の場合は、コントロールが新しくなります。そうでない場合、コード化された UI は同じコントロールを使用し、最初に定義/発見されたときのプロパティです。これが、このエラーで問題を抱えていた他の人に役立つことを願っています.

于 2013-10-23T14:36:43.973 に答える