Windows10下Python调用Selenium Geckodriver遇SessionNotCreatedException权限拒绝
我之前也踩过这个权限坑,折腾了好几个小时才捋清楚,给你几个实用的排查和解决办法,应该能帮你搞定:
检查Geckodriver的执行权限
哪怕已经把路径加到PATH里,文件本身没执行权限也是白搭。Linux/macOS下直接在终端跑这条命令(替换成你的Geckodriver实际路径):chmod +x /your/actual/path/to/geckodriverWindows用户右键Geckodriver文件→属性→安全标签,确认当前登录用户拥有「读取和执行」的权限。
用管理员/root身份运行脚本
有时候系统会限制普通用户启动浏览器进程,尤其是脚本涉及到一些系统级资源访问的时候。Windows右键命令提示符或你的IDE,选「以管理员身份运行」;Linux/macOS就在执行脚本的命令前加sudo试试。添加Firefox启动参数绕过权限限制
Firefox默认的安全沙箱可能会阻止Geckodriver建立连接,你可以初始化Driver的时候加几个参数:from selenium import webdriver from selenium.webdriver.firefox.options import Options firefox_options = Options() firefox_options.add_argument("--no-sandbox") # 禁用沙箱,解决多数权限拦截问题 firefox_options.add_argument("--disable-dev-shm-usage") # 避免临时内存空间不足的报错 firefox_options.add_argument("--headless=new") # 如果用无头模式,记得用新版参数(旧的--headless已经被弃用) driver = webdriver.Firefox(options=firefox_options)这几个参数是解决这类权限问题的常用手段,亲测有效。
指定自定义Firefox配置文件路径
Selenium启动Firefox时会自动生成临时配置文件,如果你的用户对系统临时目录没有读写权限,就会触发权限报错。可以手动指定一个你有权限的目录作为配置文件路径:firefox_options.add_argument("-profile") firefox_options.add_argument("/path/to/your/own/profile/folder")先自己创建一个空文件夹,确保当前用户能读写它,再把路径填进去就行。
确认Firefox和Geckodriver版本严格匹配
虽然你说下了最新版,但偶尔会出现小版本不兼容的情况。比如Firefox 115.x对应Geckodriver 0.33.x,一定要核对官方的版本对应表,重新下载完全匹配的版本试试。Linux系统检查SELinux/AppArmor限制
如果是Linux环境,可能是系统安全模块拦住了Geckodriver和Firefox的交互。可以先临时关闭SELinux测试:sudo setenforce 0如果问题解决了,再去配置SELinux规则允许相关进程;要是用的AppArmor,就检查Firefox的配置文件,调整权限策略。
内容的提问来源于stack exchange,提问作者coder101

