У нас есть существующая среда автоматизации пользовательского интерфейса в C #, основанная на знаниях того времени, когда мы использовали PageFactory для инициализации элементов в файлах подкачки.Недавно я прочитал больше на эту тему, и, похоже, нет реальной пользы от использования PageFactory в C #, поэтому я пытаюсь переписать страницы, используя вместо этого поля.Одна вещь, с которой у меня сейчас проблемы, - это заставить работать мои расширенные методы.
Например: в текущей реализации у меня есть элемент, идентифицированный следующим образом: [FindsBy (How = How.LinkText, Using = "Authenticate")] private IWebElement BstHomePageHeader;
public IWebElement getBstHomePageHeader()
{
return BstHomePageHeader;
}
Существует вспомогательный метод, который проверяет, существует ли элемент в определенных случаях, и он вызывается следующим образом из теста:
home.getBstHomePageHeader (). DoesElementExist (). Should (). BeTrue ("Пользователь не былперенесено на домашнюю страницу. ");
В коде метода" DoesElementExist "применяется 5-секундное ожидание, постоянно проверяющее элемент. Отображаемая проверка и игнорирующая исключения NoSuchElementException, ElementNotVisibleExpection и WebDriverTimeoutException.Если элемент не возвращается в течение 5 секунд, ложному ответу возвращается основной вызов и генерируется сообщение о свободном подтверждении.
Когда я удаляю PageFactory, элемент теперь создается, как показано ниже (в том же файле страницы):public IWebElement getBstHomePageHeader => driver.FindElement (By.LinkText ("Authenticate"));
Если я попытаюсь применить к нему тот же вспомогательный метод, что и в части строки кода DidElementExist, больше не применяется.NoSuchElementException выбрасывается непосредственно в мой файл подкачки, и поэтому свободное сообщение о подтверждении не возвращается.home.getBstHomePageHeader.DoesElementExist (). Should (). BeTrue («Пользователь не был перенесен на домашнюю страницу.»);
Возможно ли в дизайне, отличном от PageFactory, не иметь класса страницы, который выбрасываетNoSuchElementException, чтобы тест мог обработать ошибку?