1
최대 20-30 개의 링크를 포함 할 수있는 페이지가 있습니다. 이러한 링크 중 일부는 다른 요소에 따라 클래스를 가질 수 있습니다.* 클래스가없는 모든 링크 * 찾기
클래스가없는 링크를 임의로 선택하고 싶습니다.
watin으로 이것을 수행하는 방법이 있습니까?
최대 20-30 개의 링크를 포함 할 수있는 페이지가 있습니다. 이러한 링크 중 일부는 다른 요소에 따라 클래스를 가질 수 있습니다.* 클래스가없는 모든 링크 * 찾기
클래스가없는 링크를 임의로 선택하고 싶습니다.
watin으로 이것을 수행하는 방법이 있습니까?
.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
감사합니다. 조금 조정하여 치료를했습니다! –