python+selenium做ui自动化测试,元素定位脚本都未写错但是报错。找了很久没找到问题后来加延时后就成功了。原因可能是页面元素未加载完成就去执行下一步。介绍一下常用的等待方法:
(1)强制等待:sleep(x)
这种方法比较粗暴。设置完指定延时时间后(假设sleep(4)),不管你想要的元素是否加载出来,4秒到了就会进行下一步;元素提前加载出来或者延后加载出来他都不管。
缺点:1、过于死板,设置过长影响程序执行时间,设置过短有时元素又未加载出来。
2、有可能延时的地方都要加一遍,非常累赘
(2)隐性等待:implicitly_wait(x)
implicitly_wait(10)意思是,规定要不管执行到哪步都要等待10秒,然后执行下一步。如果期间元素提前加载出来了,那就提前执行下一步。如果过了10秒元素还没加载那就会报错。(一般都是设置最长等待时间,只需要设置一次,他对整个driver的周期都起作用)
缺点:你想要的元素已经加载,也要等页面所有东西都加载完才会执行下一步。有一些css,js加载特别慢。这时候就会影响程序执行时间
(3)显性等待:WebDriverWait().until()或WebDriverWait().until_not()
大概意思:每隔几秒查看一眼条件是否成立,如果成立则执行下一步。如果不成立则继续等待,等待超过设定的最长等待时间则TimeoutException抛出异常。WebDriverWait一般搭配until()方法和until_not()方法使用。通过判断条件灵活的等待【一般格式为:WebDriverWait(driver,timeout).until(method,message=""),timeout为最长等待时间,method为要查找元素的方法。message为method返回的结果。】
(大概的个人理解的意思,大家可以去官网查阅WebDriverWait的具体使用)
python+selenium自动化测试,元素定位脚本都未写错但是报错。可能是页面元素未加载完成就去执行下一步。需要加等待
最新推荐文章于 2022-07-25 08:02:00 发布