селен c # - «ленивый» драйвер. FindElements (By ..) - PullRequest
0 голосов
/ 16 мая 2018

В моих попытках найти изящный способ проверки того, какие кнопки видны пользователю, основываясь на его роли и разрешениях, я столкнулся с проблемой. Я использую шаблон проектирования Page Object Model с Selen для тестирования веб-сайта. Несколько страниц имеют различный набор кнопок, которые должны быть видимы или не видны пользователю в соответствии с его ролью.

Я сохраняю Dictionary<Permission,IWebElement> и инициализирую его в конструкторе страницы (класс, представляющий определенную страницу на сайте).

Все веб-элементы определены следующим образом:

private IWebElement btn_openShop => driver.ById("open_shop");

(ById эквивалентно FindsElement(By.Id("open_shop"))

Проблема в том, что, если кнопка не существует, при добавлении ее в Словарь создается исключение.

Примечание: перемещение инициализации словаря не поможет, так как я проверяю оба случая (один, в котором пользователь должен видеть кнопку, а другой - нет).

1 Ответ

0 голосов
/ 16 мая 2018

Я изменил Словарь на тип <Permission,Lazy<IWebElement>> и добавил к нему элементы следующим образом:

dictionary.Add(somePermission,new Lazy<IWebElement>(()=>the button))

Редактировать: этот метод работает, но кажется, что при отладке в Visual Studio код вылетает.Какие-нибудь мысли?(во время выполнения теста не генерируются исключения).

...