我遇到了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()操作。
答案 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();
}
这种方法更加手动,并且检查了确切的内容。