Chrome Selenium WebDriver非sudo模式失效问题(Jupyter Notebook环境)
修复Chrome Selenium需sudo才能运行的问题
针对你遇到的必须用sudo才能执行Selenium代码,且Jupyter环境下报错DevToolsActivePort file doesn't exist的问题,以下是具体修复方案:
1. 检查并修复chromedriver权限
普通用户无法执行代码的核心原因大概率是chromedriver或其所在目录权限不足,执行以下命令赋予普通用户执行权限:
chmod +x /my/path/to/chromedriver-103 # 若所在目录权限也有问题,可补充执行 chmod -R 755 /my/path/to/
2. 手动指定Chrome二进制文件路径
部分系统中普通用户无法访问默认的Chrome路径,在你的代码中添加Chrome二进制路径配置:
# 替换为你系统中Chrome的实际路径,比如/usr/bin/google-chrome或用户目录下的Chrome chrome_options.binary_location = "/usr/bin/google-chrome"
3. 指定可读写的用户数据目录
Chrome运行时需要读写用户数据目录,默认目录可能对普通用户权限受限,手动指定一个你有权限的目录:
# 替换为你的用户目录下的自定义路径,提前创建好该目录 chrome_options.add_argument("--user-data-dir=/home/yerin/.chrome_custom_data")
执行前先创建目录并赋予权限:
mkdir -p /home/yerin/.chrome_custom_data chmod -R 700 /home/yerin/.chrome_custom_data
4. 调整Jupyter运行权限
如果Jupyter是通过root用户启动的,普通用户执行代码时会出现权限隔离问题,建议用你的普通用户重新启动Jupyter:
# 先停止当前Jupyter进程,再用普通用户启动 jupyter notebook --port=8888
补充说明
DevToolsActivePort报错本质是Chrome无法启动调试端口,通常和权限不足、无法读写配置目录、Chrome二进制文件无法访问有关,按上述步骤逐一排查即可解决。
内容的提问来源于stack exchange,提问作者Yerin Jung
相关产品推荐
相关产品推荐

