У меня проблема с автоматизацией песочницы PayPal от Selenium Python. Обычно я записывал в кнопку явные ожидания для каждого метода действия, например send_keys()
или click()
, но они просто не работают. Я перепробовал почти все доступные явные ожидания.
Я пытался адаптировать метод, который будет ожидать, пока скрипт Angular не будет полностью загружен, но он полностью не работает из-за этого приложения, основанного на Angular v.1., выполнив javascript. Например:
while self.context.browser.execute_script(
"return angular.element(document).injector().get('$http').pendingRequests.length === 0"):
sleep(0.5)
Единственный метод, который работает, это stati c python sleep, что совершенно неуместно! Но когда я добавляю 2 секунды сна между каждым первым действием на странице, тест проходит без проблем, в то время как я пытаюсь заменить sleep
, например, WebDriverWait(self.context.browser, timeout=15).until(EC.visibility_of_all_elements_located)
, тест останавливается, когда все элементы видны на странице. Кто-то может справиться с этим? Мой код ведьма спит между объектами каждой страницы:
context.pages.base_page.asert_if_url_contain_text("sandbox.paypal.com")
context.pages.paypal_login_page.login_to_pp_as(**testPP)
sleep(2)
context.pages.choose_payment_page.pp_payment_method("paypal")
sleep(2)
context.pages.pay_now_page.click_pay_now()
sleep(2)
context.pages.finish_payment_page.click_return_to_seller()
sleep(5)
context.pages.base_page.open()
Пример метода с явным ожиданием:
def click_pay_now(self):
WebDriverWait(self.context.browser, timeout=15).until(EC.visibility_of_all_elements_located)
self.pay_now_button.is_element_visible()
self.pay_now_button.click()