在Selenoid配置启动Opera遇SessionNotCreatedException报错求解
解决Selenoid运行Opera测试时的SessionNotCreatedException错误
问题根源分析
- 错误使用ChromeOptions配置Opera:Opera浏览器需要专属的配置类,用
ChromeOptions会导致能力参数不匹配。 - browser.json镜像与实际拉取不一致:你本地拉取的是
selenoid/opera:99.0,但配置文件里写的是selenoid/vnc_opera:99.0,镜像名称不匹配会导致Selenoid无法启动正确容器。 - Selenoid选项冗余配置:
selenoid:options中重复配置了browserName和version,这些参数应该通过Options对象本身设置,而非嵌套在selenoid专属选项里。
具体修复步骤
1. 替换ChromeOptions为OperaOptions
修改Python代码,使用Opera专属配置类:
from selenium.webdriver import OperaOptions # 替换原ChromeOptions导入 options = OperaOptions() options.browser_name = config["browser"] # 明确设置浏览器名称为opera selenoid_options = { "enableVNC": True, "enableVideo": False } options.set_capability('selenoid:options', selenoid_options) return webdriver.Remote( command_executor=f'http://{selenoid_host}:4444/wd/hub', options=options )
注:若你的Selenium版本较旧,需改用
from selenium.webdriver.opera.options import Options导入配置类。
2. 修正browser.json镜像配置
将配置文件中的镜像名称与实际拉取的保持一致,若需要VNC功能则同步拉取对应镜像:
"opera": { "default": "99.0", "versions": { "99.0": { "image": "selenoid/opera:99.0", # 与本地拉取的镜像名称完全匹配 "port": "4444", "path": "/" } } }
若需VNC支持,先执行
docker pull selenoid/vnc_opera:99.0,再将上述image字段改为selenoid/vnc_opera:99.0。
3. 重启Selenoid服务
修改browser.json后必须重启服务才能生效:
# 若用systemd管理Selenoid sudo systemctl restart selenoid
若直接用Docker运行Selenoid,停止并重新启动容器即可。
4. 验证镜像与版本匹配
执行以下命令检查本地镜像,确保配置版本存在:
docker images | grep opera
额外检查点
- 访问
http://{selenoid_host}:4444/status确认Selenoid已正确加载Opera版本配置。 - 确保Selenium版本与OperaDriver版本兼容,建议使用与目标Opera版本匹配的Selenium版本。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

