概述
元素等待,等待元素加载,共3种方式 1.隐式等待 要等待整个页面加载完成,再进行元素定位,若找到元素会返回元素,若在指定时间内未找到元素,则每隔0.5s再次查找,如果最终没有找到元素,则抛出异常NoSuchElementException 方法: driver.implicitly_wait(timeout) timeout为等待最大时长,单位是秒 隐式等待只需要设置一次,会对所有元素生效
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
driver.get("https://www.jianshu.com/sign_up")
driver.maximize_window()
# 设置隐式等待为10s
driver.implicitly_wait(10)
# 找到昵称输入框并输入文本admin
driver.find_element_by_id("user_nickname").send_keys("admin")
time.sleep(3)
driver.find_element_by_id("user_nickname").clear()
time.sleep(3)
2.显示等待 表示如果能定位到元素则不触发等待,若不能定位到元素,不管页面有没有加载完成,隔一段时间后再去定位元素,如果在最大时长还没有找到元素,则抛出异常TimeoutException 使用方法: 导包 from selenium.webdriver.support.wait import WebDriverWait 调用WebDriverWait(driver,timeout,poll_frequency=0.5)类的方法来实现 driver为浏览器驱动对象 timeout为超时的时长,单位为秒 poll_frequency=0.5表示检测时间间隔,默认0.5秒 调用until(method)方法,表示直到......时 method为函数名称,用来实现对元素的定位 一般使用匿名函数来实现,lambda x:x.find_element_by_id("nickname") 代码实现: element = WebDriverWait(driver,10,1).until(lambda x:x.find_element_by_id("nickname")) 表示每隔1s寻找nickname,若超过10s没找到则报错
# 显示等待的方式找到用户名输入框元素,设置最长时间为5秒,检测间隔时间为0.5s
nikename = WebDriverWait(driver,5,0.5).until(lambda x : x.find_element_by_id("user_nickname"))
nikename.send_keys("admin123")
3.强制等待 代码休眠,不做任何操作 方法: time.sleep(time) time为强制等待的时长,单位是秒
# 强制等待3秒
time.sleep(3)
driver.quit()
隐式等待和显示等待的区别:
1.未找到元素报错的异常不一样 2.隐式等待可以对所有元素生效,显示等待只针对单独元素有效 3.隐式等待需要整个页面加载完成,显示等待不需要等待页面全部加载完成,所以显示等待效率更高
最后
以上就是悲凉背包为你收集整理的selenium(六)元素等待的3种方式的全部内容,希望文章能够帮你解决selenium(六)元素等待的3种方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复