Linux下Python调用Firefox遇SessionNotCreatedException:浏览器路径不存在
问题分析与解决
你的代码存在的问题
- 缺少Service类导入:修改后的代码使用了
Service但未从selenium.webdriver.firefox.service导入,运行会直接触发NameError: name 'Service' is not defined错误。 - geckodriver路径错误:
/home/karina/snap/geckodriver看起来是目录而非可执行文件路径。如果是通过Snap安装的geckodriver,正确路径应为/snap/bin/geckodriver;如果是手动下载的,需指向具体的可执行文件(比如/home/karina/snap/geckodriver/geckodriver)。 - 未指定Firefox二进制文件路径:Snap版Firefox的实际可执行路径并非
firefox.launcher,默认情况下Selenium无法找到正确的浏览器位置,必须手动指定Firefox的二进制路径。
修正后的代码示例
先确保已安装Snap版geckodriver(未安装则执行sudo snap install geckodriver),再使用以下代码:
from selenium.webdriver import Firefox from selenium.webdriver.firefox.service import Service from selenium.webdriver.firefox.options import Options # 指定Snap版Firefox的二进制路径 options = Options() options.binary_location = "/snap/bin/firefox" # 指定geckodriver路径(Snap安装的geckodriver用此路径) service = Service(executable_path="/snap/bin/geckodriver") # 初始化浏览器 browser = Firefox(service=service, options=options)
额外说明
- 若手动下载geckodriver,需将可执行文件放到合适路径(如
/usr/local/bin),或在代码里指定完整的可执行文件路径,同时要确保文件有执行权限(执行chmod +x geckodriver)。 - Snap版软件的路径与常规deb包安装的不同,Selenium默认配置不会自动适配,因此必须手动指定浏览器二进制文件的位置。
内容的提问来源于stack exchange,提问作者karina
相关产品推荐
相关产品推荐

