Подтвердить что ты не робот

Нажмите всплывающее окно javascript через webdriver

Я очищаю веб-страницу, используя Selenium webdriver в Python

Веб-страница, над которой я работаю, имеет форму. Я могу заполнить форму, а затем я нажимаю кнопку "Отправить".

Создает всплывающее окно (Javascript Alert). Я не уверен, как щелкнуть всплывающее окно через webdriver.

Любая идея, как это сделать?

Спасибо

4b9b3361

Ответ 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()

Ответ 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