selenium-02-三种等待方式

强制等待

强制等待-time.sleep(n)-不能准确把握等待时间,会浪费时间,影响执⾏效率。一般用于调试

隐式等待

隐式等待-driver.implicitly_wait(n)-对整个driver周期的元素都起作⽤,所以只需要设置一次,但是每⼀个元素都会等待加载完全,直到超过设定的等待时间。 这也会造成时间浪费

显示等待

显示等待-等待时间精准,最大限度的提升效率--尤其不能和隐式混用

显示等待需要⽤到两个类:WebDriverWait和expected_conditions(预期条件)两个类
WebDriverWait:设置轮询间隔(默认0.5)、超时时间等
expected_conditions:指定条件函数(也可以⾃定义条件函数)
1)wait = WebDriverWait(driver,5):
2)通常要配合until() 和 until_not()
wait.until(*)
wait.until_not(
)
3)expected_conditions 是until和until_not里面的条件 以until举例
官方文档
链接: link

    from selenium.webdriver.support import expected_conditions as ec
1.wait.until(ec.title_is(***))   //页面标题   返回布尔值
2.wait.until(ec.title_contains(***))  //模糊匹配 返回布尔值
locator = (By.ID,***)
3.wait.until(ec.presence_of_element_located(locator)) //元素不可见也可以只要加入到DOM树就行 -- 定位器  返回元素
locator = (By.ID,***)
4.wait.until(ec.visibility_of_element_ located(locator))  //元素除了要加入DOM树之外还需要可见 -- 定位器 返回元素
5.presence_of_any_elements_located(locator)判断是否⾄少有1个元素存在于dom树中。 返回元素
举个例⼦,如果⻚⾯上有n个元素的class都是'column-md-3',那么只要有1个元素存在,这个⽅法就返回True
6.visibility_of_any_elements_located(locator)判断是否⾄少有1个元素存在于dom树中且可见 返回元素
7.invisibility_of_element_located (locator)判断某个元素中是否不存在于dom树或不可⻅  返回元素
8.text_to_be_present_in_element(locator, text_):判断某个元素中的text是否包含了预期的字符串	  返回布尔值
9.text_to_be_present_in_element_value(locator, text_):判断某个元素中的value属性是否包含了预期的字  返回布尔值
10.wait.until(ec.visibility_of( driver.find_element(By.ID,***)))   //元素除了要加入DOM树之外还需要可见 -- 元素本身 -- 存在一个问题 这个要先定位元素,如果这个元素还没有加载的话很可能会报错  返回元素

3+7
强制等待:time.sleep(5)
隐式等待:driver.implicitly_wait(5)
显示等待:
wait = WebDriverWait(driver,5)
el = wait.until(expected_conditions.___)
.title_is(“###”)
.title_contains(“###”)
.presence (locator) (备注:locator=(By.ID,“###”))
.visibility (locator)
.text_to_be element(locator,“###”)
.text_to_be element_value(locator,“###”)
.alert_is_present()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值