Я использовал рамки огурца/рубина/capybara/siteprism и реализую тестовые страницы в настоящее время. Я достиг точки, в которой на нескольких страницах есть много переключателей (более 20) на страницу, и я думал, есть ли какая-либо польза в попытке сопоставить все эти элементы как статические элементы в моей объектной модели страницы?Есть ли какая-либо возможность определять переключатели в модели объекта страницы (например, SitePrism), а не напрямую использовать Capybara?
Т.е., думая об этом, кажется, гораздо удобнее просто использовать текст переключателя в определении шага и вызвать метод capybara 'choose' напрямую, что-то вроде следующего, так что мне не нужно чтобы сделать что-нибудь еще для тех 20+ радиокнопок, все это должно работать только путем изменения параметра мы передаем в функцию:
cucumber feature:
When I select that "I am over 18"
capybara step:
When /^I select that "(.*)"$/ |option|
choose(option)
в то время как с страницы объектной модели как siteprism, я предполагаю, что реализация будет нуждаться определять и поддерживать все эти элементы независимо в формате, аналогичном:
element :over_18_button, :radio_button, "I am over 18"
element :over_12_button, :radio_button, "I am over 12"
etc x50times
И для его использования нужно создать страницу, вызвать элемент, который не кажется мне прямым?
siteprism step:
When /^I select that "(.*)"$/ |option|
case option
when 'I am over 18'
over_18_button.click
when 'I am over 12'
over_12_button.click
Я думаю, можно было бы создать «элементы» или «раздел» с массивом на все кнопки, но тогда мы должны поставить дополнительную логику, чтобы разобрать их и нажмите на соответствующую одну все равно где-то в коде, в то время как все будет сделано аккуратно и без необходимости какого-либо дополнительного кода или обслуживания с помощью метода «выбрать» из capybara.
Могу ли я предположить, что в этом примере использование Capybara - лучший вариант? , или если было бы лучше определить «ВСЕ» веб-элементы в объектной модели страницы, какая польза от этого? и может ли код объекта страницы быть выполнен иным способом, чтобы воспользоваться любой возможной выгодой?
PS: добавление тега «страница-объект», «» Watir так же, как я предполагаю, что концептуально структура тестов будет таким же, поэтому, возможно, кто-то использует эту структуру может помочь, а также ...
Я вижу, что вы имеете в виду, есть функция, которая получает параметр и передает его при определении элемента объекта страницы ... но в этом случае в чем преимущество использования '@ page_object.select_age (age)' с новой реализации (плюс необходимость создания новой функции и определения элемента) вместо того, чтобы просто использовать путь capybara или watir напрямую - например, «выбрать (возраст)» и избежать всех остальных бит? Я не понимаю, почему это была бы хорошая идея, но я мог бы пропустить важный момент в объектной модели страницы? – mickael
Образец объекта страницы рассматривает несколько проблем.1) Аннотация логика реализации из бизнес-логики (что и как) 2) сохранить код DRY (все может быть обновлено в одном месте) и 3) интеллектуальная организация для упрощения обслуживания (при изменении страницы вы обновляете одну связанную страницу объект). Я не могу говорить с лучшими практиками Капибары, но Ватир - скорее библиотека (для рамки Капибары), которая хорошо поддается этой абстракции. – titusfortner