Я отошлю вас к этому ответу https://stackoverflow.com/a/8172888/409820, где я объяснил об использовании таких методов, как browser.confirm. Примеры, которые немного сбивают с толку, так как они взяты прямо из тестов, и если вы не понимаете контекст, что на тестовой странице было несколько кнопок, а та, которая вызывает диалог подтверждения, имеет значение «подтвердить» тогда внутренняя команда, заключенная в метод, не имеет большого смысла.
Команды в цикле (или блоке), следующие за методом подтверждения, являются командой, которая вызывает всплывающее окно.
Следовательно, лучшим примером того, как использовать эти методы, было бы что-то вроде
alert_message_text = browser.confirm(true) do
#watir code that causes confirm popup goes here
end
или
alert_message_text = browser.confirm(true) {#code that causes confirm popup}
Другими словами, то, как это работает с использованием .confirm(response) {block}
, очень похоже на сообщение watir: «Хорошо, команда, которую я даю вам в блоке, вызовет диалог подтверждения, и когда это произойдет, я хочу, чтобы вы предприняли действие». указано response
"
Так что, если вы ошибаетесь, это команда внутри блока, вам нужно переместить 'browser.button.click' или что-то подобное внутри блока. Ваш код будет выглядеть примерно так
require "watir-webdriver"
require "watir-webdriver/extensions/alerts"
browser = Watir::Browser.new
browser.goto "page.html"
browser.confirm(true) {browser.button(:value => 'click').click}
Я изменил ваше действие по щелчку, чтобы оно было более конкретным, идентифицируя кнопку на основе атрибута значения в предоставленном вами HTML-коде. Если вы были уверены, что это всегда будет первая кнопка на странице, вы можете изменить последнюю строку на
browser.confirm(true) {browser.button.click}