Chromebook运行Python Selenium脚本找不到chromedriver如何解决
Chromebook下Selenium ChromeDriver配置问题解决
问题描述
在Windows设备上编写的基于Selenium的Python自动化脚本可以正常运行,迁移到Chromebook运行时始终无法完成ChromeDriver适配:
- 已将ChromeDriver放在与
.py脚本相同的目录下 - 已尝试下载Linux版本ChromeDriver,和脚本一同放置在Linux文件目录下
- 在Chromebook终端执行
python3 MyFile.PY运行脚本时仍然报错
原有Python脚本代码如下:
from datetime import datetime from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import NoSuchElementException warnings.filterwarnings("ignore", category=DeprecationWarning) options = webdriver.ChromeOptions() options.add_argument("start-maximized") options.add_experimental_option('excludeSwitches', ['enable-logging']) driver = webdriver.Chrome(options=options) driver.get("https://google.com")
运行时抛出的报错信息:
FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver' raise WebDriverException( selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
解决步骤
按以下顺序操作即可解决问题:
- 第一步:确认文件位置与基础权限
所有脚本和ChromeDriver文件必须放在Chromebook的Linux开发环境目录下,不能存放在ChromeOS默认的下载、文档等非Linux共享目录,这类目录下的文件没有Linux执行权限。
打开终端切换到脚本所在目录,执行以下命令给ChromeDriver添加可执行权限(Linux下下载的文件默认不带可执行权限,这是最常见的漏做步骤):chmod +x chromedriver - 第二步:匹配ChromeDriver版本
在终端执行google-chrome --version查看Linux环境内安装的Chrome浏览器版本号,下载和版本号完全匹配、和设备CPU架构对应的Linux版ChromeDriver:x86_64架构设备下载Linux x64版本,ARM架构设备下载Linux ARM版本,版本或架构不匹配会导致识别失败。 - 第三步:选择任意一种方式配置驱动路径
- 优先推荐升级Selenium版本自动适配
执行pip3 install --upgrade selenium升级到Selenium 4.6及以上版本,该版本自带驱动自动管理功能,不需要手动下载ChromeDriver、不需要手动配置路径,直接运行脚本即可自动完成驱动匹配。
*注意:原有脚本缺少import warnings导入语句,运行会抛出NameError,需要在导入模块的部分补上这行代码。 - 代码内显式指定驱动路径
如果不想升级Selenium,在终端当前脚本目录执行pwd拿到目录完整路径,拼接得到ChromeDriver的绝对路径(例如/home/yourname/test/chromedriver),修改驱动初始化代码,显式传入驱动路径:# 先导入Service类 from selenium.webdriver.chrome.service import Service # 替换原来的webdriver.Chrome初始化行 service = Service(executable_path="这里替换成你拿到的chromedriver绝对路径") driver = webdriver.Chrome(service=service, options=options) - 将驱动加入系统PATH
执行sudo mv chromedriver /usr/local/bin/把ChromeDriver移动到系统默认的可执行文件目录,该目录默认在系统PATH中,不需要修改代码即可直接识别驱动。
- 优先推荐升级Selenium版本自动适配
- 可选优化:原代码中
options.add_experimental_option('excludeSwitches', ['enable-logging'])是Windows平台下屏蔽控制台日志的配置,Linux环境下无实际作用,可以删除减少兼容问题。
内容的提问来源于stack exchange,提问作者Thomas Nitedal
相关产品推荐
相关产品推荐

