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()操作。
您也可以尝试下面的代码,它使用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();
}
这种方法更为手动,并检查了确切的内容。