当前位置: 首页 > news >正文

最强自动化测试框架Playwright(9)- 下载文件

对于页面下载的每个附件,都会发出 page.on(“download”) 事件。

下载开始后,将发出下载事件。下载完成后,下载路径将变为可用

所有这些附件都下载到一个临时文件夹中。可以使用事件中的下载对象获取下载 URL、文件系统路径和有效负载流。

关闭浏览器上下文时,将删除属于浏览器上下文的所有下载文件
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()

方法

取消下载

该方法可以在点击事件后,取消下载文件。如果下载已完成或者已取消,则不能取消下载

download.cancel()

删除下载文件

download.delete()

下载失败

download.failure()

获取下载路径

在下载成功后,返回下载路径。
下载的文件名是随机的guid,可以使用download.suggested_filename获取建议的文件名

download.path()

下载文件另存为

将下载文件复制到用户指定的路径,如果下载没完成,会等待下载完成 

download.save_as(path)

如果不知道什么事件触发了下载,可以使用如下方法:

page.on("download", lambda download: print(download.path())) 

属性 

获取下载文件的页面

download.page

如果不知道是什么启动了下载,仍然可以处理该事件:

page.on("download", lambda download: print(download.path()))

建议的文件名

download.suggested_filename 

获取下载URL

download.url 

示例 

比如有个页面有下载地址

<body><h1>下载文件</h1><a href="https://www.python.org/ftp/python/3.10.10/python-3.10.10-embed-amd64.zip">点我下载</a>
</body>

下载文件并保存。 

from playwright.sync_api import sync_playwrightdef run(playwright):chromium = playwright.chromiumbrowser = chromium.launch(headless=False, slow_mo=3000)page = browser.new_page()page.goto(r'download.html')with page.expect_download() as download_info:page.get_by_text("点我下载").click()download = download_info.valueprint(download.page)# wait for download to completeprint(download.url)  # 获取下载的url地址# 这一步只是下载下来,生成一个随机uuid值保存,代码执行完会自动清除print(download.path())# 最终可以用save_as 保存到本地download.save_as(download.suggested_filename)browser.close()with sync_playwright() as playwright:run(playwright)

 

http://www.lryc.cn/news/120728.html

相关文章:

  • python爬虫实战(1)——网站小说
  • git: ‘lfs‘ is not a git command. see ‘git --help‘
  • python案例
  • leetcode 63. 不同路径 II
  • c语言每日一练(5)
  • pycharm配置conda虚拟环境
  • ubuntu 如何命令行打开系统设置(Wifi,网络,应用程序...)
  • MySQL DQL 数据查询
  • 深度学习基础知识笔记
  • 怎么系统的学习机器学习、深度学习?当然是看书了
  • 无涯教程-Perl - binmode函数
  • Spring Boot Maven package时显式的跳过test内容
  • 排序算法————基数排序(RadixSort)
  • leetcode做题笔记75颜色分类
  • 聊一下互联网开源变现
  • PHP日期差计算器,计算两个时间相差 年/月/日
  • 20230812在WIN10下使用python3将SRT格式的字幕转换为SSA格式
  • matlab使用教程(13)—稀疏矩阵创建和使用
  • UI美工设计的主要职责(合集)
  • 【前端二次开发框架关于关闭eslint】
  • Scractch3.0_Arduino_ESP32_学习随记_蓝牙键盘(三)
  • Spark2.2出现异常:ERROR SparkUI: Failed to bind SparkUI
  • LeetCode 2811. Check if it is Possible to Split Array【脑筋急转弯;前缀和+动态规划或记忆化DFS】中等
  • 【学习日记】【FreeRTOS】链表结构体及函数详解
  • 【云原生•监控】基于Prometheus实现自定义指标弹性伸缩(HPA)
  • Windows、 Linux 等操作系统的基本概念及其常见操作
  • 【RabbitMQ】golang客户端教程5——使用topic交换器
  • SpringBoot对接OpenAI
  • (C++)继承
  • 图像处理技巧形态学滤波之膨胀操作