Selenium:无法在 Jenkins 管道中创建用于下载的文件夹和文件

Posted

技术标签:

【中文标题】Selenium:无法在 Jenkins 管道中创建用于下载的文件夹和文件【英文标题】:Selenium: Unable to create folder and file for download in the Jenkins pipeline 【发布时间】:2017-02-14 05:41:58 【问题描述】:

测试是通过点击下载模板链接下载文件。当我在本地机器上执行脚本时,它运行良好。能够创建下载文件夹,下载的文件存储在新创建的“下载”文件夹中。 但是当我将它集成到詹金斯管道时,没有创建文件夹,也没有下载文件。 注意:在 jenkins 管道中,脚本是在 selenium 网格中使用 chrome 执行的。请参考chrome驱动中的配置。

HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", System.getProperty("user.dir") + "\\src\\main\\resources\\downloads");
ChromeOptions options = new ChromeOptions();
HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>();
options.setExperimentalOption("prefs", chromePrefs);
options.addArguments("--test-type");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap);
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(ChromeOptions.CAPABILITY, options);
driver = new RemoteWebDriver(new URL(seleniumGridUrl), cap);

【问题讨论】:

【参考方案1】:

如果您不打算在测试中检查下载文件的内容,我建议您使用一种绕过方法。使用 HTTP 库,您可以只对需要下载的资源执行 Head http 调用。在响应中,您将获得文件类型及其大小。在您的测试中,您只需对它们进行断言以验证访问下载文件的正确性。 我认为您遇到的问题与权限有关,它不允许在执行测试的环境中创建文件夹/文件。

【讨论】:

以上是关于Selenium:无法在 Jenkins 管道中创建用于下载的文件夹和文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jenkins 声明式管道中创建方法?

带有容器的 Jenkins Docker Sidecar 运行守护程序命令

Jenkins 管道无法使用凭据推送到 gerrit

Jenkins 管道 sh 在 Windows 上因“无法运行程序 nohup”而失败

多模块本地 jar 依赖项 - Jenkins Pipeline

无法使用 Jenkins 管道在本地部署 mule 4 应用程序