所以我有一段代码检查网页的一部分,以查看状态是否已更改,以进入脚本的下一步。如果没有,它会刷新页面,理想情况下,我希望脚本在此网页上等待大约5-10秒再重新刷新页面。这是我目前的循环:
orderElem = driver.find_element(By.CSS_SELECTOR, "dd.Production.Status")
while(orderElem.text != "Output Complete"):
WebDriverWait(driver, 10)
driver.refresh()
WebDriverWait(driver, 5).until(
EC.visibility_of_element_located((By.CSS_SELECTOR, "dd.Production.Status"))
)
orderElem = driver.find_element(By.CSS_SELECTOR, "dd.Production.Status")
答案 0 :(得分:2)
您可以明确地等待time.sleep(10)
而不是WebDriverWait
。
好像你试图每隔10秒刷新一次页面,直到orderElem.text == 'Output Complete'
,在这种情况下:
def until_func(driver):
driver.refresh()
elem = driver.find_element_by_css_selector("dd.Production.Status")
if elem.is_displayed() and elem.text == 'Output Complete':
return elem
orderElem = WebDriverWait(driver, timeout=60, poll_frequency=10).until(until_func)
这将每10秒刷新一次页面,检查所需元素是否可见且文本是否正确,并在满足这些条件时返回元素。