一、强制等待
一、强制等待
time.sleep(5)
二、隐式等待
语法:driver.implicitly_wait(秒)
1、整个会话只执行一次,全局起作用,后面的每一次元素查找都会进行等待,在设置的时间内元素找到就执行下一行代码,元素未找到就会报错
三、显式等待
一、包导入
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
二、WebDriverWait参数说明
1、timeout:最长超时时间,默认以秒为单位
2、poll_frequency:轮询频率,检测的间隔步长,默认为0.5s,这里会每隔 0.5 秒调用一次条件函数
3、ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常
4、可以对某个元素单独设置等待条件
三、until()结合使用
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
"写法一:分开写"
"等待,默认0.5秒检查一次元素是否出现"
"等待条件为找到某个元素结合until使用"
wait = WebDriverWait(driver=drive,timeout=10)
element_locator = (By.XPATH,'//div[@id="kw"]')
element = wait.until(EC.visibility_of_element_located(locator=element_locator))
"写法二:组合写法"
EC.presence_of_element_located():元素存在的位置
element=WebDriverWait(driver=driver,timeout=10,poll_frequency=1).until(EC.presence_of_element_located((By.ID,'//div[@class="target_id"')))
"等待多个元素出现"
wait = WebDriverWait(driver=drive,timeout=10)
wait.until(EC.visibility_of_all_elements_located(locator=location))
四、expected_conditions类
-
常用
-
from selenium.webdriver.support import expected_conditions
1、visibility_of_element_located : 判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0
2、visibility_of_all_elements_located:判断多个元素是否可见,可见代表元素非隐藏,并且元素的宽和高都不等于0
3、visibility_of :作用同visibility_of_all_elements_located传定位到的element,非定位表达式locator
4、frame_to_be_available_and_switch_to_it : 判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False
5、alert_is_present : 判断页面上是否存在alert
6、element_to_be_selected:判断某个元素是否被选中了,一般用在下拉列表
7、element_to_be_clickable : 判断某个元素中是否可见并且是enable的,这样的话才叫clickable
8、presence_of_element_located: 判断某个元素是否被加到了dom树里,【并不代表该元素一定可见】
9、presence_of_all_elements_located : 等待所有元素存在dom树中【并不代表该元素一定可见】
-
其他