2013-04-19 3 views
0

Telerik.Testing.Framework.2012.2.1527을 사용하고 있습니다. 아래 코드를 사용하고 있습니다. 나는 항상 "findElem"에 대해 null을 얻고있다. 하지만 디버그 모드에 있으면 괜찮습니다. WaitUntilReady(); 나를 위해 예상대로 작동하지 않습니다. 내 시나리오에서는 waitforelement를 사용하지 말고 시간 초과를 지정하면 안됩니다.WaitUntilReady()가 예상대로 작동하지 않습니다.

public bool IsPresentbyInputId(string findCondition) 
    { 
      Manager.ActiveBrowser.WaitUntilReady(); 
      Element findElem = Manager.ActiveBrowser.Find.ByExpression(new HtmlFindExpression("tagname=input", "id=" + findCondition)); 
      Manager.ActiveBrowser.WaitUntilReady(); 
      return findElem != null && !findElem.Attributes.Any(s => s.Value.Contains("display:none"));   
    } 

내가 여기에없는 것을 알 수 있습니까?

답변

0

지연에 대해 사과드립니다.

WaitUntilReady가 브라우저 "준비"플래그를 모니터링한다는 점을 명심해야합니다. 이 플래그는 브라우저가 기본 HTML 페이지 (예 : MyPage.html)와 참조 된 리소스 (이미지, CSS 파일, JS 파일 등)를 마자 마자 설정됩니다. 페이지가로드되면 JavaScript가 제어권을 얻음으로써 초기화되는 Ajax 포스트 백을 고려하지 않습니다.

(일반적으로 웹 서버에서 데이터를 가져올 때 어떤 유형의 회전 원을 통해 시각적으로 표시됨) WaitUntilReady가 컨트롤을 테스트 코드로 반환 한 후에도 오랫동안 DOM이 수정 될 수 있습니다. Execution Delay> 500으로 설정하면 테스트가 끝나면 애플리케이션이 Ajax 포스트 백을 수행하여 DOM이 변경 될 것입니다.

이 특정 문제를 해결할 수있는 방법은 두 가지가 있습니다. 1) WaitUntilReady() 호출 바로 다음에 ActiveBrowser.WaitForAjax() 호출을 추가합니다. 그러면 웹 서버에 대한 모든 Ajax 연결이 닫힐 때까지 테스트가 대기하게됩니다. 2) WaitUntilReady 뒤에 WaitForElement를 추가합니다. 예 : ActiveBrowser.WaitForElement (새 HtmlFindExpression ("id = maindiv"), 30000, false); 이렇게하면 코드를 이동하기 전에 지정된 속성과 일치하는 요소가 존재할 때까지 기다릴 수 있습니다.

이 정보가 도움이되기를 바랍니다.

코디 Test Studio 지원 담당자

관련 문제