2014-09-03 54 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(); 
}