Watin按标题问题查找

本文关键字:查找 问题 标题 Watin | 更新日期: 2023-09-27 18:20:25

Find.ByTitle方法有问题。我的代码是:

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()操作。

Watin按标题问题查找

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

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

从ByTitle方法的元数据中,它声明

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

因此它类似于字符串。Contains()方法。这可以通过使用以下来结束:

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

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