Watin按标题问题查找

时间:2014-09-03 11:52:13

标签: c# watin

我遇到了Find.ByTitle方法的问题。我的代码是:

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

如果FirstLinkText是&#34;产品和基金建议&#34;例如,如果浏览器页面存在,它将按预期运行并输入if语句。出于某种原因,如果FirstLinkText是&#34;基金建议&#34;它也会输入if语句,即使没有带有该标题的页面,但有一个标题为&#34;产品和基金建议&#34;的页面。

看起来好像Find.ByTitle()方法正在检查任何页面包含传递的字符串,而不是任何页面的标题都是传递的字符串的确切值

如果这太令人困惑,请给我一个喊叫,我可以尝试重写它以使其更简单。

编辑:只是说如果我以相反的方式做到这一点,那就完美了。进一步给我的印象是它更像是一个.Contains()操作。

2 个答案:

答案 0 :(得分:1)

您也可以尝试下面的代码,它使用lambda表达式

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

答案 1 :(得分: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();
 }

这种方法更加手动,并且检查了确切的内容。