2012-01-02 5 views
0

로드 이벤트 텍스트 상자에서 내 페이지에 하나의 텍스트 상자가있는 경우 10 용으로 비활성화 된 경우 watin에서 10 초 동안 기다리는 방법. 이 코드watin에서 텍스트 상자가 활성화 될 때까지 기다리는 방법

IE ie = new IE("http://localhost:2034/WebForm3.aspx"); 
     ie.ShowWindow(WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.Maximize); 
     ie.TextField("TextBox1").TypeText("Fer"); 

하려고 생각하지만 TextBox1에 그렇게 난 몇 시간 동안 대기 할 비활성화되는 오류가 있습니다. 이렇게하는 방법? 도와주세요.

+0

입니까? 또는 서버 측 코드 또는 다른 스크립트? 또한 질문을 분명하게하십시오. – dotNETbeginner

답변

0

당신은 기다릴 테스트 위해서는 일정 시간의 실을 잘 수 :

  System.Threading.Thread.Sleep(10000); 

시간 (밀리 초)입니다. 어쩌면 그 숫자를 약간 늘려야 할 필요가 있지만 여전히 효과가있을 것입니다.

+0

잠자는 시간은 임의로 길지만, 필요 이상으로 오래 기다리면 비효율적입니다. 작동하지만 위대하지는 않습니다. – OCary

0

웹 페이지가로드 당신은 아마 이것을 사용할 수있을 때이 실행 된 경우 :

요소와 모든 프레임까지 테스트 대기를 만들 것입니다 전체에 대한
ie.WaitForComplete(); 

대기가 다음 작업을 수행하기 전에로드, 귀하의 경우 입력란에 텍스트 상자를 배치하십시오.

내가 잠을 자고있는 유일한 문제는 필요 이상으로 오래 걸릴 수 있다는 것입니다. 이렇게하면 페이지가 완료 되 자마자 실행 중임을 알 수 있습니다. (약간 다를 수 있음).

0

두 개의 더 나은 긴 Thread.Sleep()을 사용하여 스크립트 또는 asnyc 호출로 인해 필드가 사용 가능할 때까지 대기하는 것보다; 예 : Ajax. (참고 : 나는 내 코드에 얼마나 많은 Thread.Sleeps()가 있는지 부끄러워 할 것이다.)

아래는 모두 체크 상자를 참조하고 있지만 동일한 개념은 텍스트 상자 나 다른 제어.

1) 비활성화 된 속성을 확인하십시오.

myPage.myCheckbox.WaitUntil("disabled", false.ToString()) 

2) 필드를 폴링하고 각 점검마다 짧은 시간 동안 잠을 자. 위의 간단한 하나의 라이너가 작동하지 않았기 때문에이 설문 조사 패턴을 수행했습니다. 나는 꽤 오랫동안 왜 그런지 기억하지 못합니다. 당신은 자바 스크립트를 게시 한 어떤 코드는

int sleepTime = 100; 
int numberOfPolls = 50; 

for (int i = 0; i < 50; i++) 
{ 
    if (myPage.myCheckbox.Enabled == false) 
    { 
     Thread.Sleep(100); 
    } 
    else 
    { 
     break; 
    } 
} 
0

당신이 시도 할 수 ...

ie.Element("TextBox1").WaitUntil<Element>(element => element.Enabled); 
관련 문제