【问题标题】:Make Selenium wait for a file download to finish让 Selenium 等待文件下载完成
【发布时间】:2015-03-14 20:17:24
【问题描述】:

我设法用 Selenium 静默下载了文件。但是 Firefox 通过在文件名中添加 1,2,3.. 来自动重命名文件,因为服务器发送的每个文件都具有相同的名称。但我想根据当前日期和时间重命名文件。所以,尝试了:

  1. 开始下载文件->downloadLink.click();

  2. 虽然(不存在带有原始名称的文件或 .part 存在) { Thread.sleep(2000); }

  3. 将下载的文件重命名为所需的名称。

但它会重命名一些文件。有些是 0 长度,最后一个文件甚至没有重命名。我认为这是因为我的代码在下载后继续并且不在 while 循环中轮询。我该怎么办 ?提前致谢。

【问题讨论】:

  • 首先,您可以从磁盘中删除文件以避免 Firefox 自动重命名,然后,如果您知道文件的大小,您可以在循环中检查它。
  • 只有在下载完成后我才能“移动”(而不是删除)文件,我的问题是我怎么知道它已经完成了?
  • 你知道文件的大小吗?如果您知道,您可以将该条件添加到 while 循环中。等到文件存在并达到该大小
  • 你能分享你的硒代码吗?

标签: java file firefox selenium download


【解决方案1】:

我会让您自动将文件移动到其他位置并重命名。 System.IO.File.Move("oldfilename", "newfilename"); (C#)

可能在文件名的末尾添加一个日期时间。

这样您就不会遇到文件名重复和找不到正确文件的问题。

【讨论】:

  • 我不能,请参考我上面的评论。我的问题不是重命名,而是查找 Firefox 何时完成下载。
【解决方案2】:

双文件大小 = file.length(); while (!file.exists() || fileSize == 0) { Thread.sleep(2000); }

【讨论】:

    【解决方案3】:

    最好的解决方案是在下载完成后重命名文件。

    另外我建议您清除任何 .part 文件作为启动前提条件。然后在进入 while 循环之前,根据您的计算机速度和互联网速度,制作 Thread.sleep();假设 thread.sleep 持续 5k 毫秒。

    然后进入while循环,寻找.part文件。查找以 .part 结尾的文件。如果存在,请再等待 5k 毫秒。

    到目前为止,此解决方案对我有效。

    【讨论】:

      【解决方案4】:

      我使用的技巧是打开下载管理器页面并期待一个指示下载完成的元素。按照使用的 Python 代码:

      # Wait until the download finish. This code just works for one single download at time on Firefox.
      # browser.execute_script('window.open();')
      # ActionChains(browser).key_down(Keys.COMMAND).send_keys('t').key_up(Keys.COMMAND).perform()
      browser.get('about:downloads')
      # files = browser.find_elements_by_class_name('download-state')
      WebDriverWait(browser, URL_LOAD_TIMEOUT).until(EC.presence_of_element_located((By.CLASS_NAME, 'downloadIconShow')))
      # 'downloadIconCancel'
      

      这种方法的问题在于,如果 Mozilla 更改下载管理器页面,它可能依赖于 Firefox 版本。

      【讨论】:

        猜你喜欢
        • 2023-01-28
        • 2015-04-19
        • 2013-12-22
        • 2021-11-22
        • 2018-05-25
        • 1970-01-01
        • 1970-01-01
        • 2021-02-01
        • 2015-11-11
        相关资源
        最近更新 更多