selenium之等待方法

等待的作用:为了提升自动化成功率

原因:存在网络不稳当可能存在刷新很慢导致找不到元素

 

第一种:强制等待

import time

time.sleep(3)  # 等待3秒

运行到该代码强制停3秒,不能进行判断

 

第二种隐式等待

# coding = utf-8
from selenium import webdriver
# 驱动文件路径
driverfile_path = r‘D:\chromedriver.exe‘  
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r‘https://www.baidu.com/‘)

driver.implicitly_wait(30)   # 作用的是driver
# 隐式等待30秒 ;全局等待30(在没有发现该元素的时候等待30秒,在30秒之内发现直接运行,在30内没有继续运行后续代码)

# 必须等待业务全部加载完成才能进行后续操作,或者超时才能继续操作

 

第三种:显示等待

from selenium.webdriver.support.wait import WebDriverWait

配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。它主要的意思就是:程序每隔xx检查一次,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException

 

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
# 驱动文件路径
driverfile_path = r‘D:\chromedriver.exe‘
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r‘https://www.baidu.com/‘)
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
# (driver,30,0.2)超时时间为30秒,每0.2秒检查1次,直到class="tt"的元素出现,否则抛出异常
text = WebDriverWait(driver,30,0.2).until(lambda x:x.find_element_by_css_selector(".tt")).text

# 退出
driver.quit()

# 问题;一次只对一个元素生效

# 当多个等待一起被应用的时候;按照那个等待的时间长就是用那个时间(隐式等待和显示等待同时使用)

 

# 坑:

1.元素找不到(iframe和句柄的切换,元素定位不熟练,元素会出现动态的情况,等待添加是否合理)

2.代码成功率不高(带宽的问题)

3.不清楚什么时候用什么技术

 

selenium之等待方法

上一篇:网络设备硬件基础学习


下一篇:Calendar.set方法获取前一天的当前时刻