【发布时间】:2021-02-23 06:33:58
【问题描述】:
我对 Selenium Python 的 PayPal 沙箱自动化有疑问。
通常,我在按钮中为每个操作方法(如send_keys() 或click())编写了显式等待,但它们只是不起作用。我尝试了几乎所有可用的显式等待。
我试图通过执行 javascript 来调整等待 Angular 脚本完全加载的方法,但由于这个基于 Angular v.1. 的应用程序,它完全不起作用。 例如:
while self.context.browser.execute_script(
"return angular.element(document).injector().get('$http').pendingRequests.length === 0"):
sleep(0.5)
唯一有效的方法是静态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()
【问题讨论】:
标签: python angular selenium paypal-sandbox webdriverwait