在我们日常进行自动化时,对元素操作后需要模拟用户操作的一样等待一会,让程序或者进程操作完成,那么在Python代码中有哪些等待方式可以使用呢?今天给大家整理一下:
方法一: 使用强制等待
添加强制等待非常简单,我们只需要引入time 包,就可以在脚本中自由的添加强制等待时间了。
代码示例:
#-*- coding:utf-8 -*-
from selenium import webdriver
from time import sleep
# 这个是python程序主入口
if __name__ == "__main__":
# 启动浏览器
browser = webdriver.Firefox()
# 打开百度
browser.get("http://www.baidu.com")
# 休眠3秒
time.sleep(3)
# 输入搜索关键字并开始搜索
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
# 休眠5秒
time.sleep(5)
# 退出浏览器
browser.quit()
方式二:使用implicitly_wait方法进行智能等待
通过添加implicitly_wait() 方法就可以方便的实现智能等待;
如:implicitly_wait(30)
该用法应该比time.sleep() 更智能,time.sleep() 只能选择一个固定的时间的等待,
implicitly_wait( )可以在一个时间范围内智能的等待。
文档解释:
selenium.webdriver.remote.webdriver.implicitly_wait(time_to_wait)
隐式地等待一个无素被发现或一个命令完成;这个方法每次会话只需要调用一次
代码示例:
#-*- coding:utf-8 -*
from selenium import webdriver
from time import sleep
# 这个是python程序主入口
if __name__ == "__main__":
# 启动浏览器
browser = webdriver.Firefox()
# 打开百度
browser.get("http://www.baidu.com")
#智能等待30秒
browser.implicitly_wait(30)
# 输入搜索关键字并开始搜索
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
# 强制等待5秒
time.sleep(5)
# 退出浏览器
browser.quit()
请思考:
这是真正意义上的智能等待么?如果不是我们又应当采取什么样的处理方式来实现智能等待呢?欢迎讨论区留言讨论~~~~