2012-03-28 46 views
1

我有一个页面可以有多达20-30个链接。根据其他因素,其中一些链接可能有一个类。查找所有链接*无*一类

我想随机选择一个没有这个类的链接。

有没有什么办法与watin做到这一点?

回答

1

使用.Filter()它似乎不喜欢试图过滤项目没有一个特殊的价值.....所以....我想出了下面的怪物;它不完全是优雅的,但它在我的测试页面上工作,并且几乎所有的时间都可以工作,因为只有很少的链接,并且这些链接中有相当比例的没有类。

由于它可能不会找到没有类/空白类的链接,如果是这样,它将显式抛出异常。实现已尝试链接的商店不会太困难,并且只会在没有任何未定义类的链接时抛出异常。下面的实施速度更快,可以“足够好”。

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)); 
} 

在测试了华廷2.1,IE9,Win7的,NUnit的2.5

+0

感谢。稍微调整一下就可以了! – 2012-03-29 12:41:17

相关问题