首页 > 编程语言 >零操作,高效下载:利用Playwright和Python完成文件下载

零操作,高效下载:利用Playwright和Python完成文件下载

时间:2024-05-14 15:58:25浏览次数:19  
标签:文件 playwright Python Playwright download path page 下载

前言

Playwright 是一个由 Microsoft 开发的跨浏览器自动化测试工具,它提供了强大的功能来模拟用户在浏览器中的操作。Playwright 还可以应用于诸如文件下载等实际场景的测试。本文将介绍如何利用 Playwright 在 Python 中实现文件下载功能。

文件下载

文件下载也是我们进行web自动化测试时经常需要面对的场景,如果我们使用的是selenium,会出现无法处理Windows系统弹出的对话框的情况,需要借助autoit等第三方工具来实现下载功能,playwright则可以不借助其他工具来实现文件自动下载。

playwright提供了expect_download()操作来实现文件的下载操作,当浏览器上下文关闭时,所有属于浏览器上下文的下载文件都会被删除。
下载开始后会发出下载事件。下载完成后,下载路径可用:

with page.expect_download() as download_info:
    page.get_by_text("Download file").click()
download = download_info.value
# wait for download to complete
path = download.path()

相关操作

  1. 取消下载

如果下载已经完成或取消,则不会失败。成功取消后,download.failure()将解析为'canceled'

download.cancel()
  1. .删除下载的文件
download.delete()
  1. 返回下载错误(如果有)
download.failure()
  1. 获取下载所属的页面
download.page
  1. 下载路径

下载成功,则返回下载文件的路径。如有必要,该方法将等待下载完成。该方法在远程连接时抛出。

download.path()

注:下载的文件名是随机 GUID,使用download.suggested_filename获取建议的文件名

  1. 将下载复制到用户指定的路径。在下载仍在进行时调用此方法是安全的。如有必要,将等待下载完成。
download.save_as(path)
  1. 返回此下载的建议文件名
download.suggested_filename

注:通常由浏览器根据Content-Disposition响应标头或download属性计算得出

  1. 返回下载的 url
download.url

实例

我们以下载我们常用的Python单元测试框架pytest为例,使用playwright的代码如下:

from playwright.sync_api import sync_playwright

def run(playwright):
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context(accept_downloads=True)
    # Open new page
    page = context.new_page()

    page.goto("https://pypi.org/project/pytest/#files")
    #  点击要下载的文件按钮
    with page.expect_download() as download_info:
        page.click("text=pytest-7.3.1.tar.gz")
    download = download_info.value
    path = download.path()
    download.save_as(path)
    # 打印保存路径
    print(path)
    # ---------------------
    context.close()
    browser.close()
with sync_playwright() as playwright:
    run(playwright)

运行脚本,结果如下,我们可以看到,我们正在下载pytest的压缩文件。

总结

使用 Playwright 和 Python,我们可以轻松实现文件下载功能,这对于需要大量下载文件的应用程序来说非常实用。

标签:文件,playwright,Python,Playwright,download,path,page,下载
From: https://www.cnblogs.com/hogwarts/p/18191473

相关文章

  • 庆余年2全集下载/电视剧庆余年第二季迅雷高清bt完整版
    《庆余年2》:谱写壮丽篇章,延续传奇情怀当《庆余年2》全集火热上线时,电视剧迷们再一次沉浸在这部剧的世界中。继第一季的热播之后,第二季以更加精彩的剧情、更加出彩的演员阵容,再次征服了观众的心。这部作品以其独特的魅力,再次引爆了观众的热情,成为了当下最受关注的电......
  • Mysql批量插入数据(python脚本)
    有个需求:需要在table1中插入205条数据,role_id固定为65,menu_id从91开始方法二:python脚本实现PyMySQL是一个纯Python编写的MySQL客户端库,用于连接和操作MySQL数据库。以下是PyMySQL的主要功能和优点:功能:数据库连接:PyMySQL提供了connect()方法,用于建立与MySQL数据库的连接。一旦......
  • Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界
    前言我们在进行web自动化时,经常遇到一些不好操作的元素,普通的元素定位和操作容易报错,如果我们使用的selenium的话,就可以使用selenium调用js脚本进行操作。在playwright中也有类似的方法,使用page.evaluate()执行JavaScript脚本。page.evaluate()和page.evaluate_handle()之间的......
  • 【python】异常获取
    【日期】2024/5/14【问题】代码异常获取【分析】1、在代码中获取异常,并打印堆栈try:Qt5QWindowIcon=MainWindow.child_window(title="FJDTrionModel",class_name="Qt5QWindowIcon")exceptExceptionase:traceback.print_exc()2、......
  • [996] Upload a file to an Amazon S3 bucket and obtain the URL of it using Python
    Certainly!TouploadafiletoanAmazonS3bucketusingPython(specificallywiththeboto3library)andobtainthelink(URL)forthatfile,followthesesteps:InstallBoto3:Makesureyouhavetheboto3libraryinstalled.Ifnot,youcaninstallit......
  • 基于Python实现MapReduce
    一、什么是MapReduce首先,将这个单词分解为Map、Reduce。Map阶段:在这个阶段,输入数据集被分割成小块,并由多个Map任务处理。每个Map任务将输入数据映射为一系列(key,value)对,并生成中间结果。Reduce阶段:在这个阶段,中间结果被重新分组和排序,以便相同key的中间结果被传递到同一个R......
  • The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. T
    numba无法支持nopython错误解决错误:The'nopython'keywordargumentwasnotsuppliedtothe'numba.jit'decorator.TheimplicitdefaultvalueforthisargumentiscurrentlyFalse,butitwillbechangedtoTrueinNumba0.59.0.Seehttps://numb......
  • python 虚拟环境中无法调用git 命令 处理方法
    确认Git安装:首先,确保Git已经安装在您的系统上。打开命令行窗口,运行git--version检查Git是否已安装以及其版本。手动设置GIT_PYTHON_GIT_EXECUTABLE:如果Git已安装,但gitpython仍然找不到它,您可能需要手动设置环境变量GIT_PYTHON_GIT_EXECUTABLE。在WindowsPower......
  • python处理exl中行的合并
    描述:现在我们有一个项目名,项目状态以及项目负责人统计的exl表格,第一列是项目名称,第二列是项目完成状态,第三列是项目负责人。但是同一个项目可能有多个负责人,但是最开始的表格并没有将这几个负责人合并起来放入同一行,所以这里就是为了将第一列相同的数据合并在一起,在owner中同时......
  • macOS Sonoma 14.5 (23F79) 正式版发布,ISO、IPSW、PKG 下载
    macOSSonoma14.5(23F79)正式版发布,ISO、IPSW、PKG下载2024年5月14日凌晨,macOSSonoma14.5发布,本更新提供了重要的错误修复,建议所有用户安装。随着版本14.5的发布,macOSSonoma的更新使命已基本完成,不出意外此版本将成为推荐版本,适合所有Mac全新安装。期待WWDC......