最近在学习Selenium自动化测试的过程中,发现总是容易出现找不到元素的情况。通常这是因为元素还没加载出来,而我们的代码已经执行导致的,为了解决这个问题,Selenium中提供了三种等待方式:固定等待、隐式等待和显式等待。
(一)time.sleep(固定等待)
这个方法我之前有用到过,在脚本调试的时候,设置这个固定等待,可以方便我们查看调试结果,但在实际使用的时候是不建议的。虽然它可以自定义等待时间,防止网络不好导致页面加载不出来时,太快去调用代码获取元素。但这个方法有个缺点,那就是网络状态良好时,也必须要等待固定的时间,而且需要在我们每一次想设置等待时间的地方都调用这个方法,所以它可能导致整个项目的执行时间无限延长。
打个比方说,我的网络状态良好,但因为设置了固定等待,本来10秒就可以跑完的自动化测试代码,只要哪里写了个time.sleep(30),那最少也得30秒才能跑完,大大浪费了测试时间。
(二)implicitly_wait(隐式等待)
隐式等待是设置一个最长等待时间,比如10秒,如果在10秒内的任何一个时间点,比如5秒的时候网页加载完成了,那么它就会在5秒的时候执行下一步,否则一直要等到10秒过去才会执行下一步。当然如果说10秒过去,还是没加载出来,那么在获取某个未加