UI自动化三种等待方式

        编写这边文章之前,据我了解很多小伙伴面试时被问到ui自动化是怎么处理页面之间的等待的,很多都会说直接加秒数去等待,其实这种方法是非常不稳定的,我更推荐的是显性等待和隐性等待的用法,UI自动化的等待方式总共有三种,分别是强制等待、隐性等待、显性等待。以下分别给你们看看他们的区别:

1、强制等待

定义:强制性让代码等待XX时间,等待后继续执行下一步操作。通常都用time.sleep(XX)方法来表示强制等待,是由Python的内置time模块提供的方法,例如:time.sleep(5),意思是强制性等待5秒时间。

import time
#强制等待5s
time.sleep(5)

2、隐性等待

定义:设置最长的等待时间,等待页面元素加载完成,若在最长等待时间内完成加载,则继续下一步操作,若超过最长等待时间,则跳出等待继续下一步。当元素在所设置的最长等待时间内加载完成,就会直接进行下一步操作,此等待方式比强制等待更省时间和更加灵活,适用于每一个页面进行等待,此方法是全局的,只需要设置在开头即可,隐式等待的方法为:implicitly_wait,是调用了 selinium的webdriver.Chorme()里的implicitly_wait()方法。注:但是窗口切换的等待则不能引用隐性等待。

from selenium import webdriver
driver = webdriver.Chrome()
#隐性等待20s
driver.implicitly_wait(20)
driver.maximize_window()

3、显性等待

定义:在某个已设定的特定条件中,等待XX秒,每XX秒监测一次,若已达特定条件,则跳入下一步操作,若超过最大等待时间,则抛异常。此等待方式用到了selenium里的WebDriverWait类,参数timeout表示等待的最长时间,参数poll_frequency表示多少秒监测一次,该用法通常都是跟until()和until_not()一起使用的,until方法里的参数是条件。

from selenium.webdriver.support.wait import WebDriverWait

def wait_eleVisible(self,locator,doc="",timeout=20,poll_frequency=0.5):
    log.logger.info("在{0} 等待元素{1}可见".format(doc,locator))
    try:
        # 开始等待时间
        start_time = datetime.datetime.now()
        # 等待操作
        WebDriverWait(self.driver,timeout,poll_frequency).until(EC.visibility_of_element_located(locator))
        # 结束等待时间
        end_time = datetime.datetime.now()
        # 求一个差值,写在日志当中,等待了多久
        wait_time = (end_time - start_time).microseconds
        log.logger.info("等待结束,等待时长为{}ms".format(wait_time))
    except Exception as e:
        log.logger.exception("等待元素可见失败!!!-在{0} 等待元素{1}可见".format(doc,locator))
        # 截图
        self.save_screenshot(doc)
        raise e

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值