20200614_20三类等待
课程回顾:
元素操作,讲解了各类元素在执行时需要注意的操作行为
Iframe与handles
1. QQ登录的切换:iframe,需要先切换iframe再操作元素点击行为
2. 容易出现元素有时候能够正常操作,有时候无法操作
考虑是否添加有等待函数
三类等待:
在实际自动化测试过程中,所有基于Python实现的自动化操作都是机器自主行为,不会去考虑你所需要执行的业务是什么。只是按部就班执行代码
为了确保自动化执行成功率,就需要人工干预,通过其他手段确保能够正常地依照我自己的想法来走
机器执行的时候,是不会停的,所以需要通过等待的手段让它适当的时候进行停止,这个过程叫做等待设置
等待总计分为三类:
强制等待
time.sleep(6)
不考虑任何情况,当代码执行到这一步时,依据sleep传递的时间参数进行对应时间的等待
优势:可以快速实现,只需要通过导入time.sleep模块即可直接调用运行,是非常简单上手的一种等待形式
劣势:会非常浪费时间
不推荐使用此类等待
隐式等待
偷偷摸摸的等待,是由Webdriver提供的一种等待模式:全局变量,对当前的整个driver生命周期都生效,直到driver.quit之后,等待失效
当需要定位元素,定位不到时,会继续进行等待,一直到等待到元素或者设置的等待时间到期为止。
优势:只需定义一次,一直可用
劣势:相对比较耗费资源,从而影响了整个的运行周期,没有办法对元素进行更为精准的操作等待,影响到自动化测试的效率
显式等待:
是唯一的一种专门针对特定的条件而设置的等待,一般是针对特定元素来执行
until与until_not两者的概念是相反的。
untile是直到什么条件为true的时候,表示正确
until_not是知道什么条件为false的时候,表示正确
当显式等待执行时,可以用于判断页面元素是存在的/不存在的
优势:可以精准地定位到指定的元素,不会耗费多余的任意力气
劣势:只能对单一的元素生效,每次需要使用的时候,就需要进行调用,类似于强制等待
显式等待默认会返回WebElement对象,意味着可以基于显式等待来做页面内容展示的判断
实际应用:
一般而言,三类等待手段结合使用
当显式等待与隐式等待结合使用时,等待时间取最长的那个
课后作业:
基于添加购物车流程,将其中的强制等待全部取消,依照三类等待的操作来实现流程的自动化的优化
再结合等待操作判断添加购物车是否成功