Python Selenium中Chromedriver的安装步骤详解
前言
缘起
selenium需要用到chrome驱动。
懒人哲学
针对不同的浏览器,需要安装不同的驱动。但是最新版的chrome,比如我们如果刚刚下载了chrome,那就是最新版,然后不知道哪里找chrome驱动,很迷茫。反正我没有在chrome官方驱动网页中找到。问搜索引擎问AI,却告诉我很多Testing、JASON API endpoints的概念,既没听说过,也懒得找。
相信这样的友友不在少数,所以,经过亲自测试后,给大家分享一下怎么用Python代码自动化下载对应版本的chromedriver驱动。这样既可以安装到最新版的chrome及其驱动而且自动化省去麻烦,也不用妥协自己去翻旧版。
需求
首先我们要知道自己当前的chrome版本是什么,然后再依照当前的版本去找对应的chrome驱动。
找到chrome的版本
以我自身为例,刚下载的是chromedriver的最新版本是 134.0.6998.165,与chrome最新版的 134.0.6998.166 版本相对应,基本能够保持同步。可以通过如下步骤查看chrome版本。
然后鼠标左键以后可以看到当前chrome的版本。这就是如何查看chrome版本,一共就三步。
将懒进行到底
同样,我也懒得查对应的驱动到底是什么。因为我们不需要专门去官方库里面找出他的地址和对应的驱动版本然后下载。我们是通过python的自动化脚本进行纯代码实现。
使用版本匹配工具
webdriver_manager
如果你使用 Python 进行自动化测试,可以使用 webdriver_manager
库。它可以自动检测 Chrome 版本并下载相应的 ChromeDriver。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.example.com")
记得先安装库,看到successfully就是安装成功了
pip install webdriver_manager
这里的example就是你要打开的路径,可以是baidu,可以是taobao,也可以是别的,随喜。
结合selenium代码和书写规范,其实长这样:
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
# 初始化 Chrome 浏览器驱动
driver = webdriver.Chrome(ChromeDriverManager().install())
try:
# 打开百度网站
driver.get("https://www.baidu.com")
# 找到搜索框并输入关键词
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("Python 自动化测试")
# 找到搜索按钮并点击
search_button = driver.find_element(By.ID, "su")
search_button.click()
# 等待一段时间,以便查看结果
input("按回车键退出...")
except Exception as e:
print(f"发生错误: {e}")
finally:
# 关闭浏览器
driver.quit()
Service
接着运行,但是报错
最后一行是重点,表明代码在尝试访问一个字符串对象的 capabilities
属性,然而字符串对象并没有这个属性。这种问题通常是由于 selenium
版本不兼容或者代码和 selenium
库的版本不匹配所导致的。而且升级库没用,因为已经是最新版了。都是。
所以,唯一的办法是修改代码。没事的,就修改两行。
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
# 初始化 Chrome 浏览器驱动
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
其实就是中间多了个服务。借助 Service 类来初始化 Chrome 浏览器驱动,这样可以避免一些版本不兼容的问题。但还是建议先更新一下selenium和webdriver_manager,毕竟新版本往往会修复一些已知的问题。
pip install --upgrade selenium
pip install --upgrade webdriver_manager
完整的代码懒得贴了,自己还是要上手好好练一遍。
——如selenium一贯的尿性。如果能弹出Chrome浏览器,则说明安装成功。
后记
java版本
如果你使用 Java,可以使用类似的 WebDriverManager 库来实现相同的功能。
多次下载
webdriver_manager
具有缓存机制,重复编译代码通常不会多次下载。所以也懒得注释。
当你第一次运行代码调用 ChromeDriverManager().install()
时,它会检查本地是否已经有与当前 Chrome 版本匹配的 ChromeDriver。除非你的chrome更新了,与驱动版本不匹配。。
如果以后在别的文件中引用driver,可以把驱动路径加入环境变量或复制到要运行的文件路径下,就不必引入service了。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(url)
driver.quit()
缓存位置
不同操作系统下,webdriver_manager
的缓存位置有所不同:
C:\Users\你的用户名\.wdm
目录下。~/.wdm
目录下。~/.wdm
目录。
你可以通过查看这些目录来确认 ChromeDriver 是否已经被下载和缓存。
参考资源:selenium入门超详细教程——网页自动化操作-CSDN博客
作者:骏333