t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как избавиться от How и Using в [FindsBy...] C#

Теги: #<Tag:0x00007f9b04022988> #<Tag:0x00007f9b04022898> #<Tag:0x00007f9b040227d0>

Несколько недель назад пришлось перейти с Java на C#. И я до сих пор не могу свыкнуться с мыслью, что в Java я использовал "@FindBy(locator = " , а в С# каждый раз нужно писать “[FindsBy(How = How.locator, Using =…” .
Я в автотестах всего несколько месяцев и только проникся концепцией DRY, а тут постоянное дублирование кода((

ЗАДАЧА
Сделать кастомный атрибут без использования How и Using

РЕШЕНИЕ
Покапавшись в инете и посмотрев доклады конференций нашел то, что нужно (казалось бы) в JDI framework. Они используют кастомный аттрибут вида “[FindBy(locator =…” . Но он находит только их типизированные элементы, а не стандартный IWebElement.

ВОПРОС
Как можно реализовать поставленную задачу? Ничего не нашел на форумах. Буду рад ссылке или совету.

Для этого надо при инициализации через PageFactory передавать свой IPageObjectMemberDecorator.

К сожалению, DefaultPageObjectMemberDecorator написан так, что не предполагает наследование с овверрайдом. Можно попытаться таки заоверрайдить Decorate() (но это будет нарушением дизайна), или продублировать реализацию для своих локаторов.