Python-Selenium 显性等待

python 复制代码
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait

 # 谷歌浏览器位置
CHROME_PATH = r'C:\chrome-win32\chrome.exe'
# 谷歌浏览器驱动地址
CHROMEDRIVER_PATH = r'C:\chrome-win32\chromedriver.exe'

options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
options.binary_location = CHROME_PATH
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, options=options)

# 隐性等待20秒
driver.implicitly_wait(20) 

driver.get('https://www.baidu.com/')

# 第一种写法
# 样式一
try:
	# 设置等待
	wait = WebDriverWait(driver,10,0.5)
	# 使用匿名函数
	element = wait.until(lambda diver:driver.find_element_by_id('kw'))
except Exception as e:
	# 异常:selenium.common.exceptions.TimeoutException: Message: 
	raise
else:
	element.send_keys('selenium')
finally:
	pass

# 样式二
try:
	element  = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id('kw'))
except Exception as e:
	# 异常:selenium.common.exceptions.TimeoutException: Message: 
	raise
else:
	element.send_keys('selenium python')
finally:
	pass

# 样式三
try:
    element = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id('su2'), '未找到元素')
except Exception as e:
	# Message: 未找到元素
    raise
else:
	element.click()

其他:

复制代码
# 我们设置了隐性等待和显性等待,在其他操作中,隐性等待起决定性作用,在WebDriverWait..中显性等待起主要作用,但要注意的是:最长的等待时间取决于两者之间的大者,此例中为20,如果隐性等待时间>显性等待时间,则该句代码的最长等待时间等于隐性等待时间

参考:
https://zhuanlan.zhihu.com/p/378919132
https://blog.csdn.net/qq_38741986/article/details/91348845
https://blog.csdn.net/sinat_41774836/article/details/88965281
相关推荐
wdfk_prog12 分钟前
嵌入式面试真题第 13 题:单硬件 Timer 下的高精度多路软件定时器架构设计
c语言·开发语言·面试·职场和发展·嵌入式
oort12324 分钟前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程
slandarer38 分钟前
MATLAB | 泰勒图绘制,支持各种角度范围
开发语言·数学建模·matlab·nature·顶刊·泰勒图
元Y亨H1 小时前
Pandas 解析 Excel 导致的内存溢出(MemoryError)
python·excel
mct1231 小时前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++
金銀銅鐵2 小时前
[Python] 用 turtle 来绘制瑞典国旗
python
Albert Edison2 小时前
【GUI 自动化测试】Pywinauto 常见操作
自动化测试·python·pywinauto
海兰2 小时前
【高速缓存】RedisVL为文本生成嵌入向量实践指南
人工智能·python·机器学习
2601_955760072 小时前
如何用 Claude Opus 5 API 批量扩展长尾关键词和文章选题
前端·python·搜索引擎
艾斯特_2 小时前
从模型调用到可用聊天应用:会话状态与消息协议
python·ai·aigc