【问题标题】:Check and open downloaded file in Selenium?在 Selenium 中检查并打开下载的文件?
【发布时间】:2019-09-26 08:49:50
【问题描述】:

我必须检查下载的 PDF 并使用 Selenium 打开它。为此,我使用Robot 类。这不是永久的,或者我们可以说是通用的解决方案。

问题:任何人都可以提供帮助并提供更可靠的解决方案吗?

请查看以下代码:

public boolean CommonEvents(WebDriver driver) throws InterruptedException { 

    try {   

        Thread.sleep(2000);     
        Robot robot = new Robot();
        robot.mouseMove(100, 700);
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);

        Thread.sleep(10000);

    } catch(Exception e) {

         BaseTest.reportPass(driver, null, "Should click on PDF to open", "Failed to click on PDF to open");
    }
}

【问题讨论】:

    标签: java selenium


    【解决方案1】:

    以防万一您真的需要打开每个下载的 PDF,那么我只需将此行添加到您的首选项中(例如对于 Firefox):

    ffprofile.setPreference("browser.helperApps.neverAsk.openFile", "application/pdf");
    

    下载完成后会自动打开下载的文件。

    【讨论】:

      【解决方案2】:

      如果你有一个保存下载的 pdf 文件的固定目录,你可以使用类似的东西。

      public static void main(String[] args) {
      
        try {
      
          File pdfFile = new File("c:\\Hello.pdf");
          if (pdfFile.exists()) {
      
              if (Desktop.isDesktopSupported()) {
                  Desktop.getDesktop().open(pdfFile);
              } else {
                  System.out.println("Awt Desktop is not supported.");
              }
      
          } else {
              System.out.println("File doesn't exists.");
          }
      
          System.out.println("File opened.");
      
        } catch (Exception ex) {
          ex.printStackTrace();
        }
      
      }
      

      参考:https://docs.oracle.com/javase/6/docs/api/java/awt/Desktop.html

      【讨论】:

        【解决方案3】:

        我们使用以下逻辑:

        1. 首先设置下载位置的首选项,以便将文件下载到您想要的位置。

          chromePrefs.put("download.default_directory", downloadFilepath);

        2. 设置首选项,使其不会要求弹出下载。

          chromePrefs.put("profile.default_content_settings.popups", 0);

        3. @Mudit_ 已回答使用正则表达式模式检查 *.pdf,如果您想让它动态化。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-17
          • 2023-04-04
          • 2011-10-22
          • 2017-03-26
          • 1970-01-01
          • 1970-01-01
          • 2015-08-23
          • 2016-12-05
          相关资源
          最近更新 更多