Я запускаю автоматический тест на Ruby / Cucumber с помощью Selenium Webdriver в Chrome и пытаюсь удалить объект, но каждый раз, когда я это делаю, всплывает окно с предупреждением и просит меня подтвердить. в окне есть кнопки «ок» и «отменить». Как я могу нажать "ОК" автоматически?
Трассировка стека ошибок:
unexpected alert open: {Alert text : Möchten Sie den Benutzer [email protected] wirklich löschen?} (Session info: chrome=68.0.3440.106)
(Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 6.1.7601 SP1 x86_64)
(Selenium::WebDriver::Error::UnhandledAlertError)
Ссылка на документацию по watir: rubydoc.info/gems/watir/Watir/Alert
Это код для нажатия кнопки ОК в предупреждении.
driver.switch_to.alert.accept
Этот код предназначен для отклонения предупреждения
driver.switch_to.alert.dismiss
Я советую использовать WATIR, если вы готовы использовать Ruby Selenium Binding, WATIR - это хорошая оболочка, которая находится поверх связывания Ruby Selenium. Есть много обычных ошибок, таких как элемент не отображается, ошибка устаревшего элемента даже не возникает в WATIR, WATIR может спасти все эти ошибки на указанное время. Поэтому используйте WATIR, если вы готовы использовать Ruby Selenium Binding.
В WATIR вы можете принять предупреждение с помощью следующего кода
b.alert.ok
Чтобы закрыть предупреждение
b.alert.close
Я пробовал этот код, но он работает, работает, и я уже использую watir, мне нужно изменить некоторые конфигурации или требования? К сожалению, я новичок в тестировании автоматизации. Я просто получаю: неожиданное предупреждение открыто: {Текст предупреждения: Möchten Sie den Benutzer [email protected] wirklich löschen?} (Информация о сеансе: chrome = 68.0.3440.106) (Информация о драйвере: chromedriver = 2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb863) Windows NT 6.1.7601 SP1 x86_64) (Selenium :: WebDriver :: Error :: UnhandledAlertError)
@EnginTopuzoglu Хорошо, тогда есть большая вероятность, что это предупреждение не является JavaScript. Не могли бы вы, пожалуйста, обновить Html-код этого окна предупреждения? Вы используете WATIR? Большой! Добавьте, пожалуйста, тег WATIR!
я не вижу html-код окна предупреждения в devtools
Хорошо, не могли бы вы выполнить код watir b.alert.ok
, а также поставить режим сна 4 до того, как предупреждение будет поднимать и писать этот код, чтобы проверить, является ли это предупреждение javascript b.alert.exists?
, если оно возвращает true, то у вас есть предупреждение Javascript или у вас может быть какой-то скрытый элемент который появляется как всплывающее окно, когда вы нажимаете кнопку, это часть html. Можете ли вы дать мне URL-адрес для проверки?
Спасибо, пользовался @browser = Selenium::WebDriver.for :chrome, options: options @browser.switch_to.alert.accept
@Engin Topuzoglu Привет, используйте WATIR, вы используете селен, вы упустите все преимущества, которые дает вам WATIR. Объявите @browser=Watir::Browser.new
.
В соответствии с обновлением вашего комментария вы видите сообщение об ошибке ...
unexpected alert open: {Alert text : Möchten Sie den Benutzer [email protected] wirklich löschen?} (Session info: chrome=68.0.3440.106) (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 6.1.7601 SP1 x86_64) (Selenium::WebDriver::Error::UnhandledAlertError)
Ваша основная проблема - это несовместимость между версиями двоичных файлов, которые вы используете, следующим образом:
Supports Chrome v65-67
Supports Chrome v67-69
Таким образом, существует явное несоответствие между ChromeDriver v2.38 и Браузер Chrome версии 68.0.
@Test
.
Обновите драйвер Chrome и селен, как говорит @DebanjanB, а затем попробуйте выполнить код
b.alert.ok
, он сработает.gem install watir
также установит selenium-webdriver, но после установки просто проверьте с помощьюgem list selenium-webdriver
. Если это не последняя версия, попробуйте также установитьgem install selenium-webdriver
.