Я новичок в Python/JS, а также в автоматическом тестировании с помощью Selenium/WebDriver, но я добился определенного прогресса!
Теперь я застрял в одной точке, и это действительно расстраивает.
Веб-сайт, который я тестирую, продает товары. Мне удалось заставить мой скрипт перемещаться случайным образом и переходить на страницу оплаты, заполнять фиктивные данные, отправлять данные, используя:
browser.execute_script("document.Form.submit(); return true;")
browser.execute_script("processPayment(); return true;")
Обычно есть кнопка «Оплатить сейчас», и щелчок по этому элементу приводит к тому же исключению, и у меня не было возможности нажать «ОК» или «Отмена» через 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