从根本上讲,如果页面是由JavaScript生成的,则无法得知页面何时“完成”加载。
然而。我通常尝试检索页面元素,捕获异常并继续尝试直到达到超时。我可能还会检查该元素是否可见,而不仅仅是存在。
必须有一些DOM元素,其可见性可用于测试页面“完成”加载。我的测试用例中通常有一个wait_for_element_visibility
和wait_for_element_presence
函数。
def wait_for_visibility(self, selector, timeout_seconds=10):
retries = timeout_seconds
while retries:
try:
element = self.get_via_css(selector)
if element.is_displayed():
return element
except (exceptions.NoSuchElementException,
exceptions.StaleElementReferenceException):
if retries <= 0:
raise
else:
pass
retries = retries - 1
time.sleep(pause_interval)
raise exceptions.ElementNotVisibleException(
"Element %s not visible despite waiting for %s seconds" % (
selector, timeout_seconds)
)
get_via_css
是我自己的功能之一,但我希望它很清楚自己在做什么。