2012-03-28 88 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

相關問題