Здравствуйте!
Я пишу автотесты на Watir, для красоты хочу использовать PageObject. И столкнулась с таким поведением формы.
1) Форма содержит только одно поле (email) и кнопку (submit). Соответственно, класс будет выглядеть как-то так:
class HomePage include PageObject page_url 'http://site.com' DEFAULT_DATA = { 'subscriber' => 'fun@yandex.ru', } text_field(:subscriber, id: "js-input-email-sub") button(:subscribe, id: "js-submit-sub") div(:error, id: "js-response-sub") def default(data = {}) populate_page_with DEFAULT_DATA.merge(data) subscribe end end
2) Теперь пишем автотесты. Если написать
page = HomePage.new(browser, true) page.subscriber_element.when_visible page.subscriber = email page.subscribe expect(page.error_element.visible?).to be_falsey
то при вводе хорошего email получаем сообщение о том, что наш email добавлен в базу (page.error_element.visible? == false) и потом сразу видим сообщение о том, что поле email не может быть пустым (page.error_element.visible? == true) и вроде бы правильный тест падает.
Если же строчку page.subscribe убрать, то сообщения о пустом email не будет. То есть, как я понимаю, данные сами ушли на сервер.
В общем, чего я хочу узнать. Можно ли как-то принудительно заставить форму ждать нажатия кнопки submit?