webdriver三种时间等待

一、强制等待:

time.sleep(5),单位是s,就是直接让线程休眠,这几秒啥事也不用干

import time    #导入时间模块
time.sleep(5)  #休眠5s钟

二、隐式等待:

在脚本创建driver对象之后,给driver设置一个全局的等待时间,对driver的整个生命周期(创建到关闭)都起效。如果在设置等待时间(超时时间)内,定位到了页面元素,则不再等待,继续执行下面的代码如果超出了等待时间,则抛出异常TimeoutException。

driver.implicity_wait(10):默认是0s等待,设置之后的值是最大超时时间

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
# 隐式等待,设置10s的超时时间
driver.implicitly_wait(10)

注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内部不断的刷新页面去寻找我们需要的元素,在使用AJAX技术的页面自动化测试中,建议使用。

三、显式等待:

就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等到就可以返回元素对象;在超时时间到达之后仍未等到,那么就抛出TimeoutException。(简而言之,就是直到元素出现才去操作,如果超时则报异常)。

先来看一下显式等待的语法,然后我们在分别解析:

element = WebDriverWait(driver,10,0.5,ignored_exceptions=None).until(EC.presence_of_element_located((By.ID,"kw")),"找不到")
`WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)`

使用的话需要先导包:from selenium.webdriver.support.ui import WebDriverWait

class WebDriverWait(object):
    def __init__(self, driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None):
        self._driver = driver
        self._timeout = timeout
        self._poll = poll_frequency
        # avoid the divide by zero
        if self._poll == 0:
            self._poll = POLL_FREQUENCY
        exceptions = list(IGNORED_EXCEPTIONS)
        if ignored_exceptions is not None:
            try:
                exceptions.extend(iter(ignored_exceptions))
            except TypeError:  # ignored_exceptions is not iterable
                exceptions.append(ignored_exceptions)
        self._ignored_exceptions = tuple(exceptions)

若同时设置了隐式等待和显示等待,则以隐式等待为第一优先级,也就是说,若隐式等待时间大于显示等待,显示等待时间设置无效,因为driver若找不到元素,会先等待隐式等待的时间

time.sleep()是强制休眠,只要执行到这句代码,就会等待

要设置等待时间,可以使用WebDriver的`implicitly_wait()`方法。这个方法会在查找元素时等待一定的时间,如果在指定时间内找到了元素,则立即执行下一步操作;如果超过了指定时间还没找到元素,则抛出`NoSuchElementException`异常。例如,可以使用以下代码设置等待时间为10秒: ```python driver.implicitly_wait(10) ``` 这样在执行自动化测试时,如果某些页面元素加载稍慢,程序会等待最多10秒,如果在这个时间内找到了元素,就会继续执行下一步操作,否则会抛出异常。这样可以在一定程度上提高测试用例的执行效率。 然而,需要注意的是,`implicitly_wait()`方法并不能精确地控制等待时间,因为它会在查找元素时一直等待指定的时间。如果页面元素早就加载完成,但是仍然需要等待指定的时间才会继续执行下一步操作,这可能会导致测试用例的执行时间变长。为了更精确地控制等待时间,可以使用显式等待(Explicit Wait)机制,它可以根据具体的条件来等待,只等到满足条件时才会继续执行下一步操作。 另外,还可以使用隐式等待(Implicit Wait)机制,它可以在整个测试过程中设置一个最长等待时间,如果在规定时间内页面元素被找到,则立即执行下一步操作,否则等到最长等待时间截止。可以使用以下代码设置隐式等待时间为10秒: ```python driver.implicitly_wait(10) ``` 使用隐式等待时,需要注意的是,它会应用于整个测试过程中的每个查找元素的操作,因此需要慎重考虑等待时间的设置,避免导致测试用例执行时间过长。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [options = webdriver.ChromeOptions()无弹窗经典python-selenium小练习](https://blog.csdn.net/kyaaaa1/article/details/87534998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [selenium WebDriver3.0 等待时间设置方法](https://blog.csdn.net/qq_41596734/article/details/109224582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王大兴的王兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值