Visual Studioのコード化されたUIテストを実行するときに見つけた問題に夢中になりました。 シナリオは次のとおりです。 私はWebアプリケーション(のMicrosoft Dynamics CRM 2011)で次の手順を実行しコード化されたUIテストを記録します。アプリケーションへのコード化されたUIテスト - 返されないUIプロパティを設定する(無期限にハンギングする)
- ログイン
- 移動ページ
- に選択した値を設定するページでhtmlコンボボックスの
このテストでは、問題なくコンボボックスの値を選択しても、すべての手順を実行できます。 Webアプリケーションには、選択した項目が変更されたときに実行されるJavascriptがあります。 値の1つが選択されている場合、アラートメッセージがユーザーに提示され、アプリケーションは選択した項目をデフォルトのものに設定します。
このようなJavaScriptコードの外観次のよう
switch (Xrm.Page.getAttribute("status").getValue()) {
case 3: //Authorised
alert("Please use the method XPTO to update the record status to Authorised!");
Xrm.Page.getAttribute("status").setValue(1);
Xrm.Page.getControl("tatus").setFocus(true);
return false;
コンボボックスの変更を行っているUI試験方法である:
/// <summary>
/// Select a value in the Status dropdown box
/// </summary>
public void SelectStatus()
{
#region Variable Declarations
HtmlComboBox uIStatusComboBox = this.UIHttpsappWindow200.UIModuleUITEDocument5.UIWorkplaceDashboardsFrame.UIModuleUITEDocument.UIStatusComboBox;
// Select 'Authorised' in 'Status' combo box
uIStatusComboBox.SelectedItem = this.SelectStatus_SPParams.UIStatusComboBoxSelectedItem;
}
試験方法は、値を変更することができますコンボボックスには、警告メッセージが表示されます。しかしコードのこの部分uIStatusComboBox.SelectedItem = this.SelectStatus_SPParams.UIStatusComboBoxSelectedItem;
は決して戻ってこないし、テストはタイムアウトするまでそこにハングアップするだけです!
私はこの問題を解決するための方法はありません。私は、アラートがユーザーに表示された後に実行されるjavascriptコードを持っているという事実に問題があるかもしれないと考えていました。 JSを変更してアラートメッセージが最後に表示されるようにしましたが、それも助けにはなりませんでした。
警告メッセージで[OK]をクリックすると、テストに合格したことに気付きました。
私が他の値を選択した場合、JSをテストしてもテストは実行されません!
誰もがこの問題について考えていますか?
編集1:
私はブラウザにJSのスクリプトを送信するためにBrowserWindowオブジェクトを使用することができ、他の事に気づきました。アラートメッセージを作成しようとすると、アラートの[OK]ボタンをクリックするまで、コールはブロックされます。
BrowserWindow bw = BrowserWindow.Locate("My window");
bw.ExecuteScript("alert('This is just a simple alert.');");
[OK]ボタンをクリックするまでExecuteScriptステートメントもブロックされます。 これは非常に奇妙なようです!