我正在尝试使用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