2017-01-06 12 views
0

私はリストを表示するwfpウィンドウを持っています。リストにページングがあるので、長いリストの場合は、「次へ」をクリックして2ページ、3ページ、4ページなどの行を見てください。強制的にアサートを更新できますか?

私は、各行に表示されている日付をアサートしています。まず、最初のページの最初の行の日付をアサートします(これは正常です)。次に、2ページ目の最初の行に日付をアサートします。問題はページ2の最初の行をアサートするときに始まり、 1ページの行私の擬似コードがある...

//ページ1行1日をアサートOK WORKS * /有効です*/

//ページ2./*WORKSに移動するには[次へ]をクリックしますOK */

//ページ2行1日をアサートHERE有効/ *問題となっている好奇心のうち、*/

、私は、最初のアサートの除去、私のテストを変更し、2ページのアサートことに気づきました行1仕事を始めた...

// 2ページ/ *に移動するには[次へ]をクリックし、[OK] WORKS */

//ページ2行1日をアサートOK WORKS * /有効です*/

コードは正しいので、ページ2、行1をアサートできますが、正しくアサートできるのは1回だけです。第二の主張では、それは最初の主張の結果を保持している。どちらのアサーションもレコーディングによって作成されています。 2番目のアサートを記録するとき、最初のアサートで使用したのと同じプロパティを使います。私はそれをフラッシュする方法を見つけることができないので、プロパティは読み取り専用です。

私は両方のアサーションが正しく動作するようにしたいのですが、私の基本的な質問は、同じリストに複数回アサートして、毎回最新の値を取得する方法です。私は、2番目のアサーションを記録する方法を検討し、記録されたアサートが最初のアサーションで使用したのと同じプロパティを使用しないように強制するか、あるいは前に以前の値をフラッシュする方法があるかもしれない二番目の主張。私の財産がある

public void Assert_Alerts_TimestampOfTopRowValid_Page1() 
    { 
     #region Variable Declarations 
     WpfText uIItem04012017153411Text = this.UIOptimalMyClientShWindow.UIItemCustom1.UIItemCustom11.UIItem04012017153411Text; 
     #endregion 

     // Verify that the 'DisplayText' property is not null 
     Assert.IsNotNull(uIItem04012017153411Text.DisplayText, "Can\'t assert the timestamp of first alert"); 
    } 

    public void Assert_Alerts_TimestampOfTopRowValid_Page2() 
    { 
     #region Variable Declarations 
     WpfText uIItem04012017153411Text = UIItem04012017153411Text;  
            \\I AM CONCERNED ABOUT WHY THIS IS RECORDED 
            \\WITH THE SAME VARIABLE AS THE LAST ASSERT. 
            \\HOW CAN I FLUSH THE VALUE OF THE VARIABLE 
            \\AND MAKE THE CODED UI TEST ASSERT IT AGAIN 
            \\OR RECORD WITH A DIFFERENT VARIABLE? 
     #endregion 

     // Verify that the 'DisplayText' property is not null 
     Assert.IsNotNull(uIItem04012017153411Text.DisplayText, "Alert Timestamp on page 2 not valid."); 
    } 

...

private WpfText mUIItem04012017153411Text; 

    public WpfText UIItem04012017153411Text 
    { 
     get 
     { 
      if ((this.mUIItem04012017153411Text == null)) 
      { 
       this.mUIItem04012017153411Text = new WpfText(this); 
       #region Search Criteria 
       this.mUIItem04012017153411Text.SearchProperties[WpfText.PropertyNames.AutomationId] = "TxtBlockAutoID10"; 
       this.mUIItem04012017153411Text.WindowTitles.Add("MyApp"); 
       #endregion 
      } 
      return this.mUIItem04012017153411Text; 
     } 
    } 

答えて

4

私はWpfText uIItem04012017153411Textに割り当てられているような問題がthis.UIOptimalMyClientShWindow.UIItemCustom1.UIItemCustom11.UIItem04012017153411Textの値であると思います。このコントロールは、最初のページの日付フィールドを参照します。 if ((this.mUIItem04012017153411Text == null))のテストからの古い値と、this.UIOptimalMyClientShWindow.UIItemCustom1.UIItemCustom11の他の名前のプロパティの同様のテストが使用されることがわかります。

解決策は、コントロールのFind()メソッドを呼び出して、検索の再評価を強制することです。あなたの質問はthis oneとよく似ており、同じ回答が適用されます。

+0

これは完全にうまくいきました。 – Ewan

関連する問題