在面试自动化职位的时候,经常会有问题涉及到你对于自动化中的三种等待时间的提问。很多时候我们在做项目中直接使用time.sleep(3)这句代码去等待3秒或者更长的时间。或者在定位不到元素时候也是直接上述代码去等待知道页面加载完全以至于定位元素成功。做出这些举动往往因为对于等待时间的不会使用导致。
1、 强制等待sleep()
开题中使用的等待就是这种方法,这种方法的坏处就是严重影响程序的执行速度。在程序执行的开始,不管打开浏览器加载是否完毕,一定都会等待这些时间,时间一到继续执行后面的代码。
from selenium import webdriver
from time import sleep
url='https://mail.163.com/'
driver = webdriver.Chrome()
driver.get(url=url)
sleep(3)
driver.maximize_window()
sleep(3)
print(driver.current_window_handle)
上述代码中共设置了2次强制等待时间。1、在打开浏览器开始就设置好强制等待3秒再最大化浏览器。2、最大化浏览器之后再等待3秒之后打印当前的handle。
2、 隐性等待implicitly_time()
设置一个最长等待时间,在整个driver的生命周期一直生效,只需设置一次即可。在遇到这行代码时候,如果浏览器在规定时间之内全部元素加载完毕那么就可以立即开始执行下行代码;如果规定时间之内还没有加载出来也要执行下行代码,这样就等着报错提示罢了。
from selenium import webdriver
from time