本文为霍格沃兹测试开发学社学员学习笔记分享
原文链接:https://ceshiren.com/t/topic/27686
强制等待:sleep 不推荐(调试时使用)
全局隐式等待
driver.implicitly_wait(TIMEOUT)
显式等待
WebDriverWait(self.driver,10).until(expected_conditions.visibility_of_element_located(LOCATOR))
显式等待
NoSuchElementException
显示等待用到的两个类:
WebDriverWait
和 expected_conditions
两个类显式等待可以等待动态加载的 ajax 元素,显式等待需要使 ExpectedCondtions 来检查条件
一般页面上元素的呈现
html 文档是自上而下加载的,
js 文件加载会阻塞 Html 内容的加载,有些 JS 异步加载的方式来完成 js 的加载
样式表下载完成之后会跟之前的样式表一起进行解析,会对之前的元素重新渲染
WebDriverWait 用法
WebDriverWait 的 until()和 until_not()方法:
presence_of_element_located
判断元素是否被加到了 DOM 树里,并不代表该元素一定可见
WebDriverWait().until(expected_conditions.presence_of_element_located(元素对象))
visibility_of_element_located
判断某个元素是否可见,可见代表元素非隐藏,并且元素的宽和高都不等于 0
WebDriverWait().until(expected_conditions.visibility_of_element_located(元素定位符))
WebDriverWait(driver,time).until(lambda x:x.find_element_by_id("someId")