selenium使用记录(一)
一 前言
环境: window 10
python3.10 selenium 4.21
随便记录一些容易犯错或理解错误或比较有意思的一些点
二 内容
1 关于驱动webdiver的下载使用
以前通常是,根据浏览器的版本下载好合适的浏览器驱动到本地电脑,然后使用的时候配置好驱动路径
如下:
chromedriver_path = r"D:\xxxxxxxxx" # 这里替换为你下载的webdriver的路径
service = Service(chromedriver_path)
driver = webdriver.Chrome(service=service, options=chrome_options)
前段时间发现这个版本有个方法能自动下载配置合适的驱动,再也不用手动去下载驱动了,
之前隔一段时间去运行代码都报错,原因就是浏览器更新了,要重新下载合适的驱动
首先要安装一个包 webdriver_manager
# 导入要打开浏览器对应的manager
from webdriver_manager.chrome import ChromeDriverManager
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)
2 关于用出现的异常来处理业务逻辑
有时,我们希望在selenium在找不到元素的状态下,来进行一些业务逻辑的处理
try:
xxxxx
element = driver.find_element(xxxxx)
except Exception as e:
xxxxx找不到元素时要做的事情xxx
如上一段伪代码,想在找不到某个元素的时候写处理逻辑,但Exception捕获的范围太大了,它不仅能捕获元素未找到的异常,还能捕获很多其他的代码异常,如果是其它异常,这就不是我们想要的了,因为与未找到元素异常下的业务逻辑不相匹配,因此最好是精准捕获元素未找到的异常NoSuchElementException
try:
xxxxx
element = driver.find_element(xxxxx)
except NoSuchElementException as e:
xxxxx找不到元素时要做的事情xxx
3 关于页面元素不可点击
判断一个元素是否可点击,有种常用的方法是
#如果没有抛出异常,说明元素可点击
element = wait.until(EC.element_to_be_clickable((By.xx, xxxxx)))
但有时候,这个方法也不管用,如在豆瓣读书上 点击下一页的时候
不断点击[后页]按钮,来跳转到新的一页,当其不可点击时,
try:
wait2 = WebDriverWait(driver, 1)
page_wait = wait2.until(EC.element_to_be_clickable((By.XPATH, '//*[@class="next"]')))
logger.info(f'page: {page_wait}')
next_button = driver.find_element(By.XPATH, '//*[@class="next"]')
next_button.click()
except Exception as e:
logger.info(f"点击下一页出现异常")
raise
如上,在最后一页是不会抛出异常的
当然,上面关于[后页]的xpath定位范围有点大,是定位到span标签的,可以定位到span下面的a标签,最后一页的时候没有a标签,这样就会抛出异常了
4 关于父标签的文本
当一个标签内有多个子标签,如果找到父标签所在元素,然后打印该元素的文本。则会输出父标签的文本信息,还会输出其所有子标签的文本信息
以百度首页为例
使用selenium的关键代码部分为
list_text = driver.find_element(By.ID, "hotsearch-content-wrapper").text
print(list_text)
输出结果
5 find_element()与find_elements()
看下源代码中find_element的定义
如上,可以看到,find_element()里面,会先执行find_elements(),拿到find_elements()结果后,拿结果中的第一个数据作为find_element()的结果
所以,find_element()相当于find_elements()[0]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南