强制等待
time.sleep(3)这种方式简单粗暴,必须等XX时间,不管你浏览器是否加载完了,程序都得等3秒,然后继续执行下面的代码,太死板,严重影响程序的执行速度。可以作为调试用,有时代码里面也这样用。
隐式等待
implicitly_wait(xx)设置一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。好处是不用像强制等待(time.sleep(n))方法一样死等固定的时间n秒,可以在一定程度上提升测试用例的执行效率。不过这种方法也从在一个弊端,那就是程序会一直等待整个页面加载完成,也就是说浏览器窗口标签中不再出现转动的小圈圈,再会继续执行下一步,比如有些时候想要的页面元素早就加载完了,但由于个别JS资源加载稍慢,此时程序仍然会等待页面全部加载完成才继续执行下一步,这无形中加长了测试用例的执行时间。
注意:隐式等待时间只需要被设置一次,然后它将在driver的整个生命周期都起作用。
# encoding=utf-8
import unittest
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
class VisitSogouByIE(unittest.TestCase):
def setUp(self):
# 启动IE浏览器
# self.driver = webdriver.Firefox(executable_path = "d:\\geckodriver")
self.driver = webdriver.Ie(executable_path=