设置se:downloadsEnabled时触发SessionNotCreatedException问题求助
解决Selenium Grid配置下载时SessionNotCreatedException问题
问题分析
添加options.setCapability("se:downloadsEnabled", true)后触发SessionNotCreatedException,说明该Grid专属能力与当前Chrome配置或节点环境不兼容。se:downloadsEnabled是Selenium 4 Grid用于统一管理下载的能力,但如果节点未正确配置下载目录、权限,或者与Chrome原生偏好设置冲突,就会导致会话启动失败。
解决方案
方案1:移除Grid专属下载能力,用Chrome原生偏好配置
直接通过Chrome的prefs配置下载行为,无需依赖se:downloadsEnabled,这种方式兼容性更强:
if (browser.equalsIgnoreCase("chrome")) { ChromeOptions options = new ChromeOptions(); options.setCapability("platformName", Platform.LINUX); HashMap<String, Object> chromePref = new HashMap<>(); chromePref.put("plugins.always_open_pdf_externally", true); chromePref.put("download.prompt_for_download", false); chromePref.put("safebrowsing_for_trusted_sources_enabled", false); // 指定Linux节点上可写的下载目录,需确保该目录存在且Chrome进程有权限读写 chromePref.put("download.default_directory", "/tmp/downloads"); options.setExperimentalOption("prefs", chromePref); driver = new RemoteWebDriver(new URL("http://localhost:4444/"), options); }
注意:在Grid节点服务器上创建指定目录并赋予权限:
mkdir -p /tmp/downloads chmod 777 /tmp/downloads
方案2:保留se:downloadsEnabled并配置Grid节点
如果必须使用Grid的下载管理能力,需确保节点启动时指定下载目录,且客户端与节点的Selenium版本一致(均为4.9.0):
- 启动Grid节点时添加下载目录参数:
java -jar selenium-server-4.9.0.jar node --downloads-dir /tmp/downloads
保持代码中的
se:downloadsEnabled配置,同时确认节点服务器的/tmp/downloads目录权限正确。访问Grid控制台(
http://localhost:4444/ui)查看节点状态,确认节点已注册下载能力且无报错。
内容的提问来源于stack exchange,提问作者tedtrain
相关产品推荐
相关产品推荐

