我是靠谱客的博主 悲凉背包,最近开发中收集的这篇文章主要介绍selenium(六)元素等待的3种方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

元素等待,等待元素加载,共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种方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部