Если на странице 3-4 одинаковые по смыслу(и по тексту\названию) кнопки, как быть с cucumber.

На странице сайта есть 3-4 одинаковые по смыслу кнопки - перейти в корзину , какие-то силенидом ищутся по тексту какие-то только по value.
в разных сценариях на геркин соответственно жмутся разные кнопки
но в сценариях кукумбера хочется как-то унифицировать и объединить поиск таких кнопок, ну например если из всех кнопок “добавить в корзину” мне необходимо нажать вторую или 4
но чтобы не особо пришлось плодить разных отдельных методов
до этого момента необходимые кнопки находились вот так :
строка сценария на геркин :
Если нажать на кнопку Добавить в корзину
метод:

@Если("^нажать на кнопку (.+)$")
    public void clickButton(String nameButton) {
            $(byText(nameButton)).shouldBe(Condition.visible).click();
    }

Что-то вопрос вообще непонятен.
У вас и так метод унифицирован, что вы хотите?

Ага тоже не ясно, чем плохо иметь маленькие методы и чуть-чуть кода. А то кажется получится вундервафля с кучей ифов :slight_smile:

Немного писал тесты на Cucomberjs, насколько я знаю там немного другая парадигма написания шагов. И описывать подробные действия не совсем правильно. Первая проблема с которой вы столкнетесь это отсутствие инкапсуляции и соответственно вы будете видеть все похожие действия. Как я понимаю, описывать нужно только бизнес логику, более высокоуровнево, а реализацию скрывать внутри. Я писал в стиле как советуют в этом посте

1 лайк

У программного обеспечения есть такой параметр, называемый testability. Сложность тестируемости.

О чем это может подсказать?
Это напоминает тестировщику о том, что он влияет на качество продукта через процесс тестирования.

Процесс тестирования чем проще и более отлажен, тем легче обеспечивать качество по.

Следующий вопрос - как упрощать процесс тестирования через testability?

В вашем случае, нужно сходить в систему версионного контроля и добавить для каждой кнопки уникальный тестовый идентификатор и согласовать это с разработчиками.

Это станет вашим локатором для тестов.

Вам ещё повезло, так как это юай тестирование. В более сложных системах внесение таких изменений затруднено и стоит намного дороже.

Если бы ваша кнопка была бы в блоке/группе/панели с названием, то можно передавать название кнопки и название этого блока/панели/группы, например:
Если нажать кнопку Добавить в корзину в блоке <тут название блока>