在Selenium
中,如果在给定超时后条件为False
,是否有惯用方式刷新页面?例如,
elem1 = WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CLASS_NAME, "some-class")))
如果60秒后elem1
仍然不存在,我该如何刷新页面并重新开始等待?
答案 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循环。