python时间等待的几种方式_python基础:时间等待(三种)

一、强制等待—sleep

强制等待:不管浏览器元素是否加载完成,程序都得等待3秒,3秒一到,继续执行下面的代码。

ps:不是太推荐,会造成程序运行时间过长

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get('https://www.baidu.com')

sleep(3) # 强制等待3秒再执行下一步

print(driver.title)

二、隐式等待—implicitly_wait()

1、implicitly_wait(xx):设置等待时间为xx秒,等待元素加载完成,如果到了时间元素没有加载出,就抛出一个NoSuchElementException的错误。

2、注意:隐性等待对整个driver的周期都起作用,所以只要设置一次即可。隐性等待,最长等30秒

3、不利于个性化定制

driver.implicitly_wait(30)

三、显示等待—WebDriverWait()

1、导入WebDriverWait包后可以使用。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。

PS:个人比较喜欢这种时间等待方式

from selenium import webdriver

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get('https://www.baidu.com')

# 设置浏览器:driver 等待时间:20s

wait = WebDriverWait(driver, 20)

# 设置判断条件:等待id='kw'的元素加载完成

input_box = wait.until(EC.presence_of_element_located((By.ID, 'kw')))

# 在关键词输入:关键词

input_box.send_keys('关键词')

WebDriverWait的具体参数和方法:

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver: 浏览器驱动

timeout: 超时时间,等待的最长时间(同时要考虑隐性等待时间)

poll_frequency: 每次检测的间隔时间,默认是0.5秒

ignored_exceptions:超时后的异常信息,默认情况下抛出NoSuchElementException异常

until(method,message='')

method: 在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是False

message: 如果超时,抛出TimeoutException,将message传入异常

until_not(method,message='')

until_not 与until相反,until是当某元素出现或什么条件成立则继续执行,

until_not是当某元素消失或什么条件不成立则继续执行,参数也相同。

method

message

四、三种方式的优缺点:

1.强制等待使用最简单,但是无论页面加载完成都要加载设定的时间长度,不够灵活

2.隐式等待浏览器会在设定的时间内不断再DOM种刷新查询该元素,知到出现位置,会降低测试性能。

3.显示等待,用法相对于前两种相对复杂,但是也是最灵活的。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值