
在实践(一)中,登录过程中网页加载慢,出现了还没等图片完全加载出来就进行图片识别的现象,导致识别失败,如下图

那么我们应该如何操作去避免提前加载的现象呢?
如果给它加一个条件满足(图片验证码显示完全)时:再进行图片识别操作是否可行呢,我们来看看
Selenium有3种等待时间:

结合以上三种等待方法与图片完全加载出来再去图片识别相比较,发现WebDriverWait()比较适用,那么WebDriverWait()如何使用呢?
1. 使用WebDriverWait()方法:
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
driver :浏览器驱动名称
timeout :最长超时时间,默认以秒为单位。
poll_frequency :检测的间隔(步长)时间,默认为0.5S。
ignored_exceptions :超时后的异常信息,默认情况下抛NoSuchElementException异常
WebDriverWait()一般由until()或until_not()方法配合使用
HTML结构:

browser=webdriver.Firefox()browser.get("https://login.acesse.com/en?dest_url=https://acesse.com/en/contact")#打开测试网站 Element=WebDriverWait(browser,100).until( EC.presence_of_element_located((By.ID,"captcha_img_id")))
browser.find_element_by_name("Login").send_keys("xxxx")
browser.find_element_by_name("Password").send_keys("xxxxx")
代码意思是:ID名称为"captcha_img_id"的元素显示等待100s,如果没有出现,抛出异常,通过上面方法就可以处理等待页面元素加载完全后进行相关功能操作。
网友评论
哈哈,不敢当,互相学习
确实是这样,我后续使用的就是强制等待,简单方便