> import time
> time.sleep(seconds)
> from time import sleep
> sleep(seconds)
代码执行到等待处以后会强制休眠seconds 这么长时间,然后再会继续往下执行。
-----------使用较少。
> driver.implicitly_wait(seconds)
只需要在开头设置一次,后面所有的查找元素都可以使用。
会等待所有的资源都加载完成以后,才算等待结束
隐式等待的弊端:会消耗一部分时间去等待不需要操作的元素。
假如在设置的时间范围内元素还没有加载出来,则会超时,timeout。
隐式等待使用较少。
显式等待 直到 元素加载出来以后才会操作。如果等待的元素出现不会继续去等待,如果超时则会报错。
from selenium.webdriver.common.by import By # 导入By模块用来定位元素
from selenium.webdriver.support.ui import WebDriverWait # 导入等待的模块
from selenium.webdriver.support import expected_conditions # 导入预期的条件
ele = WebDriverWait(driver=driver, timeout=10, poll_frequency=0.3).\
until(expected_conditions.presence_of_element_located((By.CSS_SELECTOR, ".right")))
eles = WebDriverWait(driver, 10, 0.2).until(expected_conditions.presence_of_all_elements_located((By.CSS_SELECTOR, ".right")))
# driver.find_elements_by_css_selector("") # 列表
# print (type(eles))
driver 表示实例化的浏览器驱动对象
timeout 表示设置的超时时间
poll_frequency 表示轮询时间,表示两次查找元素之间的时间间隔。
presence_of_element_located(locator) 需要以 元组 的形式传递参>数 例如使用id定位元素,则实参就是(By.ID, “id属性的值”)