Python承诺:如何使用promises等待页面加载或webelement?

时间:2017-05-04 09:21:59

标签: python selenium-webdriver promise

我正在尝试使用Python的Promise包远离预期条件和显式等待

这是我的代码:

from selenium import webdriver
from promise import Promise

driver = webdriver.Firefox()
driver.set_window_size(1500, 1000)
driver.maximize_window()

about = '#fsl > a:nth-child(3)'
products = 'body > header > div > nav > ul > li:nth-child(2) > a'

print ">> START <<"

promise = Promise(driver.get('https://google.co.uk'))
promise.then(driver.find_element_by_css_selector(about).click())

assert driver.find_element_by_css_selector(products).is_displayed() == True

driver.quit()

这是google网页,点击底部的“关于”链接,并断言链接“我们的产品”显示在下一页。

此测试失败,因为在click()命令承诺之后立即执行断言。这是有意义的,承诺提供,但页面仍然需要一些时间来加载。

如何创建一个承诺,模拟等待webelement可见或页面完全加载?

更新:

我一直在尝试Promise拥有的_wait方法,但无济于事:

promise.then(driver.find_element_by_css_selector(about).click())\
._wait(driver.find_element_by_css_selector(products).is_displayed())

assert driver.find_element_by_css_selector(products).is_displayed() == True

0 个答案:

没有答案