复制代码
1
2
3
4
5
6
7
8
9元素等待,等待元素加载,共3种方式 1.隐式等待 要等待整个页面加载完成,再进行元素定位,若找到元素会返回元素,若在指定时间内未找到元素,则每隔0.5s再次查找,如果最终没有找到元素,则抛出异常NoSuchElementException 方法: driver.implicitly_wait(timeout) timeout为等待最大时长,单位是秒 隐式等待只需要设置一次,会对所有元素生效
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14import 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)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
182.显示等待 表示如果能定位到元素则不触发等待,若不能定位到元素,不管页面有没有加载完成,隔一段时间后再去定位元素,如果在最大时长还没有找到元素,则抛出异常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没找到则报错
复制代码
1
2
3# 显示等待的方式找到用户名输入框元素,设置最长时间为5秒,检测间隔时间为0.5s nikename = WebDriverWait(driver,5,0.5).until(lambda x : x.find_element_by_id("user_nickname")) nikename.send_keys("admin123")
复制代码
1
2
3
43.强制等待 代码休眠,不做任何操作 方法: time.sleep(time) time为强制等待的时长,单位是秒
复制代码
1
2
3# 强制等待3秒 time.sleep(3) driver.quit()
隐式等待和显示等待的区别:
复制代码
1
2
31.未找到元素报错的异常不一样 2.隐式等待可以对所有元素生效,显示等待只针对单独元素有效 3.隐式等待需要整个页面加载完成,显示等待不需要等待页面全部加载完成,所以显示等待效率更高
最后
以上就是悲凉背包最近收集整理的关于selenium(六)元素等待的3种方式的全部内容,更多相关selenium(六)元素等待内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复