python - 如何使用 Selenium Python 进行同时下载
问题描述
我正在尝试使用 Selenium/Python 自动测试下载时间。我手动测试的方法是打开 5 个选项卡,然后单击一个选项卡上的“下载”按钮,然后使用 Cntrl-Tab 快速移动到下一个选项卡,单击“下载”等。然后计时。
我已经到了创建代码以打开 5 个选项卡的地步,但是当我单击第一个选项卡中的“下载”时,它正在等待文件完全下载,然后才能转到下一个选项卡。在代码移动到下一行之前必须完全下载文件吗?
为了移动到下一个选项卡,我尝试了使用击键和切换窗口句柄。它们都可以工作,但它们正在等待下载完成,而我希望所有下载都一起下载。
- 选项卡 1 - 点击下载
- 移动到下一个选项卡或切换窗口句柄
- 选项卡 2 - 点击下载
- 移动到下一个选项卡或切换窗口句柄
- 选项卡 3 - 单击下载
- 移动到下一个选项卡或切换窗口句柄
- 选项卡 4 - 点击下载
- 移动到下一个选项卡或切换窗口句柄
- 选项卡 5 - 单击下载
在之前的标签下载发生时,是否没有办法在以下标签上单击下载?
我需要为此使用多线程吗?
非常感谢。
解决方案
我认为进程池非常适合您的情况。
这是摘要
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
推荐阅读
- python - 如何将语句转换为蛇案例?
- azure - 写入 zip - Azure 函数内部
- python - Marshmallow Schema 和类继承
- javascript - 控制台没有出现在 Chrome 开发者工具的底部
- sql - SQL Server 存储过程查询多个表
- python - 地块类别、比例、总数
- python - 我可以使用字典键的信息来定义同一个字典的另一个键吗?
- c# - 调用 CompleteAdding() 时如何处理 BlockingCollection<> 中的剩余数据
- plsql - 如何正确处理 PL SQL 中的触发器?
- postgresql - 如何在选择最大值时选择最大日期值