以下3种方法:
就绪状态
检查页面就绪状态(不可靠):def page_has_loaded(self):
self.log.info("Checking if {} page is loaded.".format(self.driver.current_url))
page_state = self.driver.execute_script('return document.readyState;')
return page_state == 'complete'这个wait_for助手函数很好,但不幸的是click_through_to_new_page处于竞争状态,在浏览器开始处理单击之前,我们可以在旧页中执行脚本。page_has_loaded马上就回真假。
id
比较新页ID和旧页ID:def page_has_loaded_id(self):
self.log.info("Checking if {} page is loaded.".format(self.driver.current_url))
try:
new_page = browser.find_element_by_tag_name('html')
return new_page.id != old_page.id except NoSuchElementException:
return False比较ID可能不如等待过时的引用异常那么有效。
staleness_of
使用staleness_of方法:@contextlib.contextmanagerdef wait_for_page_load(self, timeout=10):
self.log.debug("Waiting for page to load at {}.".format(self.driver.current_url))
old_page = self.find_element_by_tag_name('html')
yield
WebDriverWait(self, timeout).until(staleness_of(old_page))
有关详细信息,请参阅哈里的博客.