selenium学习:等待方式

隐式等待

1.针对查找元素设置最大的超时时间
2.可以全局性的设置
3.不满足时,提示no such element

driver.implicitly_wait(5) #对查找元素最大的超时时间,如果超过最大等待时间后,没有找到元素,则会报错:no such #elementexception

显式等待

直到传递给他的条件得到解决,才会继续,否则会报错。他会以一定频率调用该条件,直到等待超时结束
1.不仅仅针对元素查找,还支持很多条件
2.显示等待支持自定义条件
3.不满足时报错TimeoutException

  wait = WebDriverWait(driver,10)#常见显示等待对象,其中包含参数(driver,timeout=10,poll_frequency=0.5) 超时时间时10s,每0.5秒去轮询
  login_link=wait.until(expected_conditions.presence_of_element_located((By.LINK_TEXT,'登录')))
  #expected_conditions 方法名字
  #(By.LINK_TEXT,'登录')是一个元组
自定义

参考expected_conditions里面的方法
1.页面包含指定元素

def text_contains(text:str):
    def _predicate(driver):
        return text in driver.page_source
    return _predicate

expected_conditions文件中的方法
在这里插入图片描述
2.自定义显示等待-点击元素成功
思路:点击成功,就返回true,否则返回false

def click_success(locator):
        def _predicate(driver):
            try:
                element = driver.find_element(*locator)
                element.click()
                return True
            except:
                return False

        return _predicate
    wait = WebDriverWait(driver,timeout=10)
    wait.until(click_success((By.LINK_TEXT,'进入个人中心')))
    # driver.find_element(By.LINK_TEXT,'进入个人中心').click()

sleep()

time.sleep(n)

总结

显示等待:除了支持查找元素,还支持很多条件,比如等待元素可点击、等待元素出现、等待页面包含标题、等待页面包括某个url等
隐式等待:只针对查找元素

显示等待:当查不到时,显示timeout
隐式等待:当查不到时,显示no such element

显示等待:还支持自定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值