首页 > 解决方案 > 如何使用 Selenium Python 进行同时下载

问题描述

我正在尝试使用 Selenium/Python 自动测试下载时间。我手动测试的方法是打开 5 个选项卡,然后单击一个选项卡上的“下载”按钮,然后使用 Cntrl-Tab 快速移动到下一个选项卡,单击“下载”等。然后计时。

我已经到了创建代码以打开 5 个选项卡的地步,但是当我单击第一个选项卡中的“下载”时,它正在等待文件完全下载,然后才能转到下一个选项卡。在代码移动到下一行之前必须完全下载文件吗?

为了移动到下一个选项卡,我尝试了使用击键和切换窗口句柄。它们都可以工作,但它们正在等待下载完成,而我希望所有下载都一起下载。

  1. 选项卡 1 - 点击下载
  2. 移动到下一个选项卡或切换窗口句柄
  3. 选项卡 2 - 点击下载
  4. 移动到下一个选项卡或切换窗口句柄
  5. 选项卡 3 - 单击下载
  6. 移动到下一个选项卡或切换窗口句柄
  7. 选项卡 4 - 点击下载
  8. 移动到下一个选项卡或切换窗口句柄
  9. 选项卡 5 - 单击下载

在之前的标签下载发生时,是否没有办法在以下标签上单击下载?

我需要为此使用多线程吗?

非常感谢。

标签: pythonseleniumautomationdownload

解决方案


我认为进程池非常适合您的情况。

这是摘要

from concurrent.futures import ProcessPoolExecutor

def download_from_tab(tab_num):
    pass

with ThreadPoolExecutor() as executor:
    for tab_num in range(number_of_tabs):
       _ = executor.submit(download_from_tab, tab_num)

上面的代码将为每个选项卡打开一个新进程并开始并行下载内容。

您可以在此处找到官方文档: https ://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor

还有一个很棒的视频,逐步展示了如何使用流程来实现这一点:https ://www.youtube.com/watch?v=fKl2JW_qrso


推荐阅读