找到所有链接*没有*一个类

时间:2012-03-28 15:11:19

标签: .net watin

我有一个页面,最多可以有20-30个链接。根据其他因素,其中一些链接可能有一个类。

我想随机选择一个没有班级的链接。

用watin有没有办法做到这一点?

1 个答案:

答案 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上测试