Сценарий Selenium/WebDriver прерывается предупреждением – исключение «Сообщение: присутствует u'Modal dialog»

Я новичок в Python/JS, а также в автоматическом тестировании с помощью Selenium/WebDriver, но я добился определенного прогресса!

Теперь я застрял в одном месте, и это очень расстраивает.

Веб-сайт, который я тестирую, продает товары. Мне удалось заставить мой скрипт перемещаться случайным образом и переходить на страницу оплаты, заполнять фиктивные данные, отправлять данные, используя:

browser.execute_script("document.Form.submit(); return true;")
browser.execute_script("processPayment(); return true;")

Обычно есть кнопка «Оплатить сейчас», и щелчок по этому элементу приводит к тому же для меня, чтобы нажать OK/Отмена через WebDriver (без WebElement), но я понял, что, выполнив этот JS-код, я могу обойти его. Моя недавно загруженная страница (после отправки данных и подтверждения их публикации) с подтверждением и всеми правильными данными загружается, но скрипт Python прерывается, и я не могу продолжить тест.

Есть ли обходной путь для этого? Я хочу, чтобы он игнорировал этот модальный диалог, ждал загрузки следующей страницы подтверждения, а затем продолжал находить элементы, печатать их значения, сохранять их и т. д.

Пробовал использовать:

wait = ui.WebDriverWait(browser,10)
wait.until(lambda browser: browser.title.lower().startswith('Your Receipt'))
print(browser.title)

, но скрипт прерывается. Извините, если на этот вопрос был ответ, но я не смог его найти, а также я новичок!

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Получилось! В моем случае сработало то, что я просто немного изменил свой код.

browser.execute_script("document.roomBookingForm.submit(); return true;")
alert = browser.switch_to_alert()
alert.dismiss()
browser.execute_script("processPayment(); return true;")

Примечание для новичков: вам нужно будет импортировать Alert.

from selenium.webdriver.common.alert import Alert
11
задан tsaulic 4 August 2014 в 04:42
поделиться