等待+刷新页面

时间:2015-12-15 10:23:39

标签: python selenium

Selenium中,如果在给定超时后条件为False,是否有惯用方式刷新页面?例如,

  elem1 = WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CLASS_NAME, "some-class")))

如果60秒后elem1仍然不存在,我该如何刷新页面并重新开始等待?

2 个答案:

答案 0 :(得分:3)

发生NoSuchElementException时重新加载网站。我建议与implicitly_wait结合使用。

此外,使用find_element_by_class_name会使代码更简洁,也可能更具可读性。

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

driver = webdriver.Firefox()    
driver.implicitly_wait(60)

# try 2 times
for _ in range(1, 3):
    try:
        elem1 = driver.find_element_by_class_name("some-class")
        break
    except NoSuchElementException:
        driver.refresh()
        continue
else:
   # handle cases when element was not found

答案 1 :(得分:1)

如果超过WebDriverWait时间,则会抛出TimeoutException。将等待放入for循环中,尝试:...除了:在它周围,在except:子句中添加一个延迟。如果没有异常发生,则页面已加载,您可以跳出for循环。