2017-01-06 6 views
0

목록이있는 wfp 창이 있습니다. 목록에 페이징이 있으므로 긴 목록 인 경우 다음을 클릭하여 2, 3, 4 페이지의 행을 볼 수 있습니다.강제로 어설 션을 새로 고칠 수 있습니까?

각 행에 표시된 날짜를 나타내는 Assert가 있습니다. 먼저 첫 번째 페이지의 첫 번째 행에 날짜를 표시하고 (이는 정상적으로 작동 함) 페이지 2의 첫 번째 행에 날짜를 표시합니다. 문제는 페이지 2의 첫 번째 행을 표시 할 때 시작됩니다. 보기 페이지에서 1. 내 의사 코드는에 행 ... 페이지 1 행에

// 어설 일 1 유효/* WORKS OK */

// 페이지 2./*WORKS로 이동하려면 다음을 클릭합니다 OK */

// 1/* 문제는 */호기심에서

, 나는 내 테스트를 변경 첫 어설를 제거하고 발견 여기 유효 페이지 2 행에 어설 일 해당 페이지 2의 어설, 행 1

// 페이지로 이동하려면 다음을 클릭 작업을 시작 2./* 페이지 2 행에 OK */

// 어설 날짜를 WORKS 1/*하면 OK */

일들 유효 따라서 코드는 정확하며 페이지 2, 행 1을 어설 션 할 수 있지만 한 번만 올바르게 어설트 할 수 있습니다. 두 번째 주장에서, 그것은 첫 번째 주장의 결과를 고수하고있다. 두 어설 션은 녹음하여 만들어졌습니다. 두 번째 어설 션을 기록 할 때 첫 번째 어설 션에서 사용한 것과 동일한 특성을 사용합니다. 속성은 읽기 전용이므로 플러시 할 방법을 찾을 수 없습니다.

두 주장이 모두 제대로 작동하기를 원한다. 나의 기본적인 질문은 같은 목록에서 여러 번 주장하고 매번 최신 값을 얻는 방법이다. 나는 두 번째 assert를 기록하는 방법을 연구하고 첫 번째 assert에 사용 된 것과 동일한 속성을 사용하지 않도록 기록 된 assert를 강제 실행하거나 이전에 이전 값을 플러시하는 방법이있을 때 대답이 올 것이라고 생각합니다. 두 번째 주장. 내 재산은

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

관련 문제