2014-09-03 58 views
0

我遇到了Find.ByTitle方法的問題。我的代碼是:Watin通過標題查找問題

if (IE.Exists<IE>(Find.ByTitle(FirstLinkText))) 
{ 
    mainPage = Browser.AttachTo<IE>(Find.ByTitle(new Regex(FirstLinkText))); 
} 
else 
{ 
    browser = new IE(); 
} 

如果FirstLinkText是「產品與基金的建議」,例如如預期它會運行,如果瀏覽器頁面存在進入if語句。出於某種原因,如果FirstLinkText是「基金建議」,即使沒有帶有該標題的頁面,但也有標題爲「產品和基金建議」的頁面,它也會輸入if語句。

它似乎好像Find.ByTitle()方法檢查頁面是否有任何頁面包含被傳遞的字符串,而不是任何頁面的標題是要傳遞的字符串的確切值。

如果這太令人困惑,給我一個呼喊,我可以嘗試重寫它,使其更簡單。

編輯:只是說,如果我這樣做的方式相反,它完美的作品。進一步給我的印象是更多的.Contains()操作。

回答

0

從已ByTitle方法的元數據它指出

// Parameters: 
// title: 
//  The title to match partially. 

因此它是類似於string.Contains()方法。這可以通過使用以下內容來完成:

if (IE.Exists<IE>(Find.By("Title", FirstLinkText))) 
{ 
    mainPage = Browser.AttachTo<IE>(Find.ByTitle(new Regex(FirstLinkText))); 
} 
else 
{ 
    browser = new IE(); 
} 

這種方法更爲人工且具有檢查的確切內容。

1

您也可以嘗試下面的代碼,它使用lambda表達式

if (IE.Exists<IE>(Find.By("Title", FirstLinkText))) 
{ 
    mainPage = Browser.AttachTo<IE>(Find.ByTitle(title => title.Equals(FirstLinkText)); 
} 
else 
{ 
    browser = new IE(); 
}