2012-03-28 7 views
1

최대 20-30 개의 링크를 포함 할 수있는 페이지가 있습니다. 이러한 링크 중 일부는 다른 요소에 따라 클래스를 가질 수 있습니다.* 클래스가없는 모든 링크 * 찾기

클래스가없는 링크를 임의로 선택하고 싶습니다.

watin으로 이것을 수행하는 방법이 있습니까?

답변

1

.Filter()으로 작업하는 것은 특정 값이없는 항목을 필터링하려고하지 않는 것 같아 ..... ..... 나는 아래의 괴물을 생각해 냈습니다. 그것은 정확하게 우아하지는 않지만 내 테스트 페이지에서 작동하며 거의 모든 시간 동안 작동합니다. 작은 링크 수와 클래스가없는 링크의 적절한 비율.

클래스/빈 클래스가없는 링크를 찾지 못할 수도 있으므로 명시 적으로 예외를 throw합니다. 링크가 시도 된 스토어를 구현하는 것은 그리 어렵지 않을 것이고, 클래스가 정의되지 않은 링크가 없다면 예외를 던질 것이다. 아래는 구현이 더 빠르며 "충분 함"일 수 있습니다. WatiN 2.1 IE9, Win7에에서 테스트

var browser = ie.Page<MyPageClass>(); //obviously anonymized here. 
int numberOfLinks = browser.Document.Links.Count; 
Random random = new Random(); 
int randomNum = random.Next(0, numberOfLinks); 
int counter = 0; 
int maxTimesToTry = 1000; 

for (int i = 0; i < maxTimesToTry; i++) 
{ 
    if (string.IsNullOrEmpty(browser.Document.Links[randomNum].ClassName)) 
    { 
     Console.WriteLine("url: " + browser.Document.Links[randomNum].Url); 
     break;      
    } 
    else 
    { 
     randomNum = random.Next(0, numberOfLinks); 
    } 
    counter++; 
} 

if (counter == maxTimesToTry) 
{ 
    throw new Exception(string.Format("Unable to find a link without a class in {0} tries", maxTimesToTry)); 
} 

, NUnit를 2.5

+0

감사합니다. 조금 조정하여 치료를했습니다! –

관련 문제