当前位置: 首页 > 知识库问答 >
问题:

Selenium-从UI启动下载时,文件未下载到Jenkins目录

尚嘉勋
2023-03-14

希望有人能帮我,

场景:我是,

  1. 导航到有下载图标的页面
  2. 单击“下载”图标
  3. .pdf文件开始下载到我的项目目录

注意:下载过程中不会显示确认消息,只要单击下载图标,文件就会被下载

观察到:当在本地运行测试用例时(从mvn命令和testng命令),它似乎正在工作并将文件下载到我的目录中。

然而,同样的案例似乎不适用于詹金斯。该文件不会下载到 Jenkins Directory。

本地: Windows Machine Jenkins: Linux 浏览器: Chrome

配置的路径:

String parentDirectoryPath = System.getProperty("user.dir");

String testExecutionDownloadFilesFolderPath = parentDirectoryPath + File.separator + "TestingExecutionResult" +File.separator+"DownloadedFiles"+ File.separator;

因此,基本上,文件下载到“DownloadedFiles”文件夹中,该文件夹位于我的项目目录中。

我正在打印下载应该发生的Jenkins路径,它似乎指向正确:

2021-07-15 08:02:13 INFO UI_PAGE - FILEPATH===> /var/jenkins_home/workspace/PROJECT_UI/TestingExecutionResult/DownloadedFiles/

同一案例成功运行,但文件未下载到Jenkins目录中。

如果我在这里错过了什么,请指导我。

文件下载片段:

 int beforeDownload = FilesAndDirectoriesHelper.getNoOfFilesInDirectory(
            downloadPath);
    log.info("Total Files before Download: " + beforeDownload);
    JSExecutorHelper.clickOnWebElement(driver, downloadIcon);
    log.info("Clicked download icon for entry....");
    //Sleep is being used to wait for the download to complete
    TimeWaitHandling.threadSleepDelay(10000);

    int afterDownload = FilesAndDirectoriesHelper.getNoOfFilesInDirectory(
            downloadPath);
    log.info("Total Files after Download Start: " + afterDownload);

downloadPath -上面提供的路径(testExecutionDownloadFilesFolderPath)。

//This method is used to return the no. of files present in given folder
public static int getNoOfFilesInDirectory(String directoryFilePath) {

    try {
        File directory = new File(directoryFilePath);
        if(directory!=null) {

            File[] files = directory.listFiles();
            return files.length;
        }
    }catch (Exception e) {
        // TODO: handle exception
    }
    return 0;
}

共有2个答案

尉迟正奇
2023-03-14

如果Chrome是在Docker容器中运行的,那么您需要阅读Docker文档中的绑定挂载。

李言
2023-03-14

要解决这个问题,您需要在浏览器配置中设置下载路径。

在铬中:

String parentDirectoryPath = System.getProperty("user.dir");
String downloadFilepath = parentDirectoryPath+"/downloads/";
APP_LOGS.debug("Chrome Download path set to: "+downloadFilepath);
File downloadFolder = new File(downloadFilepath);
if (!downloadFolder.exists()){
      downloadFolder.mkdir();
 }
Map<String, Object> prefs = new HashMap<>();
prefs.put("download.default_directory", downloadFilepath);
prefs.put("download.prompt_for_download", false);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
WebDriver driver = new ChromeDriver(options);

在火狐中:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2)
profile.setPreference("browser.download.manager.showWhenStarting", False)
profile.setPreference("browser.download.dir", downloadFilepath)
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip")

FirefoxOptions option = new FirefoxOptions();
option.setProfile(profile);
WebDriver driver = new FirefoxDriver(option);

注意:请提供有关该问题的更多信息。就像你正在使用的浏览器,你已经实现的逻辑

 类似资料:
  • 问题内容: 我尝试设置Firefox以便自动下载文件。我在这里输入链接描述中做了建议,但是我无法使它工作。 这是我的代码: PDF仍在浏览器PDF查看器中打开。任何想法? 问题答案: 要禁用在Firefox中打开和下载pdf,请执行以下操作: 可以在此处找到MimeTipes列表。

  • 问题内容: 我正在使用selenium脚本,在其中尝试下载Excel文件并为其指定特定名称。这是我的代码: 无论如何,我可以给下载的文件指定一个特定的名称吗? 码: 问题答案: 您不能通过硒指定下载文件的名称。但是,您可以下载文件,在下载的文件夹中找到最新文件,然后根据需要重命名。 注意:从Google搜索中借用的方法可能有错误。但是你明白了。

  • 上面的代码在colab中调用,使用: 文件夹已正确创建。但是它不是将500MB+zip文件下载到checkpoints文件夹,而是从下载确认页面下载html。在日志记录中,该脚本似乎每次都提取一个新的下载确认字符串,这通常应该强制Google Drive在没有病毒扫描的情况下下载:

  • 我正在使用一个selenium脚本,试图下载一个Excel文件并给它一个特定的名称。这是我的代码: 我可以给正在下载的文件一个特定的名称吗? 代码:

  • 在我为客户制作的网站上,当他们尝试使用Internet Explorer 11下载文件时,他们无法从该站点下载文件。 这些文件保存在我们的服务器上,使用上传文件的数据库,位置,名称和MIME类型的文件能够被下载。例如,路径为“/uploaded _ files/6f/AE 69 BD 966 ba 4c 740 b 8073 ff 969 a 5425 b”,文件名为“Finland Test 1

  • 问题内容: 我正在寻找一种从网站自动下载文件的方法。 目前,该过程确实是手动且繁重的。我进入网页,输入通行证并登录。它打开一个弹出窗口,在这里我必须单击下载按钮以保存.zip文件。 您对我如何自动执行此任务有任何建议? 我在Windows 7上,主要可以使用MS Dos Batch或python。但是我愿意接受其他想法。 问题答案: 您可以使用Selenium Web驱动程序自动执行下载。您可以在