1 强制等待


利用 time.sleep 实现强制等待

  1. url="https://www.baidu.com"
  2. browser.get(url)
  3. time.sleep(2)
  4. Element=broswer.find_element(By.ID,value)

2 隐式等待


如果在规定时间内,整个网页都加载完成,则执行下一步,否则会抛出异常

  1. url="https://www.baidu.com"
  2. browser.get(url)
  3. broswer.implicitly_wait(20)
  4. Element=broswer.find_element(By.ID,value)

3 显式等待


1 显示等待的基本使用

可以根据需要定位的元素来设置显式等待,无需等待页面完全加载 WebDrivertWait(driver,timeout,poll_frequency,ignored_exceptions).until(要调用的方法) driver:浏览器 timeout:最大超时时间(秒) poll_frequency:执行间隔(秒) ignored_exceptions:忽略的异常

2 expected_conditions 实例方法

title_is:判断当前页面的title是否与预期字符串一致,返回布尔值 title_contains:判断当前页面的title是否包含预期字符串,返回布尔值 presence_of_element_located:判断元素是否加载到dom树 visibility_of_element_located:判断元素是否可见,可见代表元素非隐藏,并且元素的宽和高都不为0 visibility_of:判断元素是否可见,如果可见就返回这个元素 text_to_be_present_in_element:判断某个元素中的text是否包含了预期的字符串 text_to_be_present_in_element_value:判断某个元素中的value属性是否包含了预期字符串 text_to_be_present_in_element_attribute:判断某个元素中的属性是否包含了预期字符串 frame_to_be_availabe_and_switch_to_it:判断该frame是否可以switch进去,如果可以,则返回True并且switch进去,否则返回False invisibility_of_element_located:判断某个元素是否不存在于dom树或不可见 element_to_be_clickable:判断某个元素是见并且是enable(有效)的,这样的话才叫clickable staleness_of:等某个元素从dom树下移除,返回True或False element_to_be_selected:判断某个元素是否被选中,一般用于select下拉框 element_selection_state_to_be:判断某个元素的选中状态是否符合预期 element_located_selection_state_to_be:跟上面的方法一样,只是上面的方法传入定位到的element,这个方法传入locator alert_is_present:判断页面上是会否存在alert

  1. from seleium.webdriver.support.wait import WebDriverWait
  2. from selenium.webdriver.support import expected_conditions as EC
  3. wait=WebDriverWait(broswer,5,0.5)
  4. url="https://www.baidu.com"
  5. browser.get(url)
  6. Element=wait.until(EC.presence_of_element_located((By.ID,value)))
  7. Elements=wait.until(EC.presence_of_all_elements_located((By.ID,value)))