2014-09-03 5 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 является «Продукт и Фонд рекомендации», например, он будет работать, как ожидается, и введите, если заявление, если страница браузера существует. По какой-то причине, если 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

Вы также можете попробовать ниже код, который использует лямбда-выражение

if (IE.Exists<IE>(Find.By("Title", FirstLinkText))) 
{ 
    mainPage = Browser.AttachTo<IE>(Find.ByTitle(title => title.Equals(FirstLinkText)); 
} 
else 
{ 
    browser = new IE(); 
} 
Смежные вопросы