Аз съм сравнително нов в 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