我有一个页面,最多可以有20-30个链接。根据其他因素,其中一些链接可能有一个类。
我想随机选择一个没有班级的链接。
用watin有没有办法做到这一点?
答案 0 :(得分:1)
使用.Filter()
它似乎不想尝试过滤到没有特定值的项目.....所以....我想出了下面的怪物;它不是很优雅,但它可以在我的测试页面上运行,并且几乎所有的时间都应该工作,因为链接数量很少,并且这些链接中有相当大比例没有类。
因为它可能找不到没有class / blank类的链接,如果是这样,它将显式抛出异常。实现已经尝试了链接的商店并不会太困难,并且如果没有没有定义类的链接,则只会抛出异常。以下内容更快实施,可能“足够好”。
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));
}
在WatiN 2.1,IE9,Win7,NUnit 2.5上测试