[selenium]等待

王柳  金牌会员 | 2022-8-22 12:11:20 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 891|帖子 891|积分 2673

前言

当网络不稳定或应用页面加载有问题,可以设置等待,避免网络问题导致找不到元素等异常。
隐式等待

隐式等待设置的是最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束。
隐式等待在driver的整个生命周期都有效,初始化的时候设置一次即可。
  1. # 隐式等待10秒
  2. driver.implicitly_wait(10)
复制代码
显式等待
  1. from selenium.webdriver.support.ui import WebDriverWait
  2. # 使用js的方式等待页面加载
  3. # 最长显式等待10秒
  4. WebDriverWait(driver, 10).until(lambda driver: driver.execute_script('return document.readyState') == 'complete')
  5. print("页面加载完成")
  6. driver.find_element(by=By.CSS_SELECTOR, value="...").click()
  7. # 使用期望条件
  8. from selenium.webdriver.support import expected_conditions as EC
  9. from selenium.webdriver.common.by import By
  10. WebDriverWait(driver,timeout).until(EC.presence_of_element_located((By.ID, "query")))
复制代码
EC期望条件

条件说明title_istitle是否已出现title_containstitle中是否包含某些字符presence_of_element_located元素是否已被加载到dom树,并不代表元素一定可见visibility_of_element_lcoated元素是否已被加载到dom树且可见visibility_of元素是否可见presence_of_all_elements_located是否有至少一个元素存在于dom树visibility_of_any_elements_located是否至少有一个元素可见text_to_be_present_in_element元素是否包含预期字符text_to_be_present_in_element_value元素的属性值是否包含预期字符frame_to_be_available_and_switch_to_itframe是否可切换进去invisibility_of_element_located元素是否存在于dom或不可见element_to_be_clickable元素是否可见且可点击staleness_of等待元素从dom中移除element_selection_state_to_be元素选中状态是否符合预期element_located_selection_state_to_be元素选中状态是否符合预期alert_is_present页面似乎存在alert
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表