Я новичок в 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