2016-09-22 11 views
0

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ステートメントもブロックされます。 これは非常に奇妙なようです!

答えて

0

私は回避策を見つけたと考えています。私はこの問題で私を助けることができる何かを見つけるためにグーグルでいたと私はStackOverflowのCoded ui test - Select an item from a combobox without using mouse coordinates

にこの質問を見つけてしまう 私はHtmlComboBox要素の「SelectedItemの」プロパティを使用せずにドロップダウンで同じ項目を選択しよう。私の場合は

public void SelectStatus_SP(string SelectedItem) 
    { 
     #region Variable Declarations 
     HtmlComboBox uIStatusComboBox = this.UIHttpsappWindow200.UIpopupUITEDocument5.UIWorkplaceDashboardsFrame.UIpopupUITEDocument.UIStatusComboBox; 
     #endregion 

     Mouse.Click(uIStatusComboBox); 
     Keyboard.SendKeys(uIStatusComboBox, "{Down}{Down}{Enter}", ModifierKeys.None); 
    } 

: は私がしたい要素を選択するために、最初に私がドロップダウンをクリックしてから、私はダウンキーを使用してキーを入力し、ドロップダウンボックス内の要素を選択するために、キーボードを使用してみてください選択したい要素が3番目の要素なので、2回下に移動して、選択したい要素にEnterキーを押します。

この回避策はあまり良くありません。要素が位置を変更すると、私はworng oneを選択します。しかし、これは私がその部分に在庫されていないテストのために得た唯一の方法でした!

似たような問題があったのだろうかと思います。私にはこれはコード化されたUIテストエンジンのバグのように思えるので、アラートが閉じられていない間はテストを保存するためのscenceを作成しません!

関連する問題