Нажмите всплывающее окно javascript через webdriver
Я очищаю веб-страницу, используя Selenium webdriver в Python
Веб-страница, над которой я работаю, имеет форму. Я могу заполнить форму, а затем я нажимаю кнопку "Отправить".
Создает всплывающее окно (Javascript Alert). Я не уверен, как щелкнуть всплывающее окно через webdriver.
Любая идея, как это сделать?
Спасибо
Ответы
Ответ 1
Python Webdriver Script:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://sandbox.dev/alert.html")
alert = browser.switch_to_alert()
alert.accept()
browser.close()
Веб-страница (alert.html):
<html><body>
<script>alert("hey");</script>
</body></html>
Запуск webdriver script откроет HTML-страницу с предупреждением. Webdriver немедленно переключается на предупреждение и принимает его. Затем Webdriver закрывает браузер и заканчивается.
Если вы не уверены, что появится предупреждение, вам нужно поймать ошибку с чем-то вроде этого.
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://sandbox.dev/no-alert.html")
try:
alert = browser.switch_to_alert()
alert.accept()
except:
print "no alert to accept"
browser.close()
Если вам нужно проверить текст предупреждения, вы можете получить текст предупреждения, обратившись к текстовому атрибуту объекта предупреждения:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://sandbox.dev/alert.html")
try:
alert = browser.switch_to_alert()
print alert.text
alert.accept()
except:
print "no alert to accept"
browser.close()
Ответ 2
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
#do something
if EC.alert_is_present:
print "Alert Exists"
driver.switch_to_alert().accept()
print "Alert accepted"
else:
print "No alert exists"
Подробнее о excepted_conditions https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.expected_conditions.html
Ответ 3
Я использую привязки Ruby, но вот что я нашел в документации Selenium Python Bindings 2:
http://readthedocs.org/docs/selenium-python/en/latest/index.html
Selenium WebDriver имеет встроенную поддержку обработки всплывающих диалоговых окон. После запуска и действия, которые откроют всплывающее окно, вы можете получить доступ к предупреждению со следующим:
alert = driver.switch_to_alert()
Теперь я думаю, вы можете сделать что-то вроде этого:
if alert.text == 'A value you are looking for'
alert.dismiss
else
alert.accept
end
Надеюсь, что это поможет!
Ответ 4
Если вы хотите принять или щелкнуть всплывающее окно, независимо от того, что это такое,
alert.accept
Где
alert
- объект класса selenium.webdriver.common.alert.Alert(driver)
и accept
- метод этого объекта
Источник
Ответ 5
который зависит от функции javascript, которая обрабатывает отправку формы
если нет такой функции, попробуйте отправить форму, используя post