零操作,高效下载:利用Playwright和Python完成文件下载
off999 2024-09-16 00:43 48 浏览 0 评论
前言
Playwright 是一个由 Microsoft 开发的跨浏览器自动化测试工具,它提供了强大的功能来模拟用户在浏览器中的操作。Playwright 还可以应用于诸如文件下载等实际场景的测试。本文将介绍如何利用 Playwright 在 Python 中实现文件下载功能。
文件下载
文件下载也是我们进行web自动化测试时经常需要面对的场景,如果我们使用的是selenium,会出现无法处理Windows系统弹出的对话框的情况,需要借助autoit等第三方工具来实现下载功能,playwright则可以不借助其他工具来实现文件自动下载。
playwright提供了expect_download()操作来实现文件的下载操作,当浏览器上下文关闭时,所有属于浏览器上下文的下载文件都会被删除。 下载开始后会发出下载事件。下载完成后,下载路径可用:
pythonwith 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.failure()将解析为'canceled'
pythondownload.cancel()
- .删除下载的文件
pythondownload.delete()
- 返回下载错误(如果有)
pythondownload.failure()
- 获取下载所属的页面
pythondownload.page
- 下载路径
下载成功,则返回下载文件的路径。如有必要,该方法将等待下载完成。该方法在远程连接时抛出。
pythondownload.path()
注:下载的文件名是随机 GUID,使用download.suggested_filename获取建议的文件名
- 将下载复制到用户指定的路径。在下载仍在进行时调用此方法是安全的。如有必要,将等待下载完成。
pythondownload.save_as(path)
- 返回此下载的建议文件名
pythondownload.suggested_filename
注:通常由浏览器根据Content-Disposition响应标头或download属性计算得出
- 返回下载的 url
pythondownload.url
实例
我们以下载我们常用的Python单元测试框架pytest为例,使用playwright的代码如下:
pythonfrom 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,我们可以轻松实现文件下载功能,这对于需要大量下载文件的应用程序来说非常实用。
相关推荐
- 德国对日本直播在线观看(德国对日本比分)
-
女解说员是girl巴尼亚。日本2-1逆转战胜德国。世界杯小组赛E组首轮第一场比赛中,日本队2-1战胜德国队。第31分钟,劳姆在禁区内被权田修一放倒。随后京多安主罚点球命中,德国队1-0领先。整个上半场...
- 小小影视在线视频(小小影视免l)
-
原因如下:1、可能程序不兼容,可以更换个版本试试。另外建议参考下程序对配置的要求。2、或者右键需要运行的程序选择兼容性用兼容模式运行试试。3、可能是手机下载的软件没下载正确,或者手机有没有提示什么问题...
- 全能视频转换器免费版(全能mp4转换器)
-
狸窝全能视频转换器是一款常见的视频转换软件,它可以将各种视频格式相互转换,支持多种设备的视频格式转换,功能比较强大。但是,对于软件是否存在病毒这个问题,我们无法给出确切的答案,因为这取决于你从哪里下载...
- qq下载安装最新版(下载qq免费安装正版)
-
手机上下载的QQ却安装不了的原因及处理方法如下:1、原来版本QQ还在运行,可以把QQ关闭之后再重新安装。2、手机内存问题,查看手机内存还有多大的剩余空间,可以删除不常用的软件再安装QQ。3、QQ安装包...
- 下载淘宝购物网(淘宝购物下载和安装最新版)
-
捷易淘宝小号购买平台助手是一款专业的淘宝小号出售平台助手,软件全自动智能搜索你需要的淘宝小号,最安全的淘宝在线交易平台。 专业多线程快速查询你需要的淘宝小号 支持多种小号,如。淘宝邮箱小号,手...
- 免费在线影视观看网站(在线观看影视剧网址)
-
有蛮多的,茶杯狐影视,555影视,首播影院都是可以看电影的免费网址,里面有很多最新更新的电影,综艺,电视剧,动漫,可以收藏起来目前有许多观看最新电影的网站可供选择。其中一些知名的网站包括Netflix...
- 4399造梦西游3(4399造梦西游3账号)
-
在4399造梦西游三中,要进入下界需要完成一定的任务。首先,需要完成主线任务“寻找下界之门”,该任务需要完成一系列的支线任务,包括“寻找下界之钥”、“寻找下界之路”等。完成这些任务后,就可以进入下界了...
- 原来的琪琪电影在线看(原来琪琪电影在线看免费)
-
186x2=372原来多372张
- python编程软件(python编程软件怎么读)
-
学点编程是一款手机编程应用,这款软件界面漂亮,功能强大,支持多种语言,内容丰富,编程的程序员们可千万不要错过啦!应用包含一张涵盖了所有HTML5元素释义的列表,并能查看元素在内置浏览器中实现的样式...
- google play apk(Google play apk English)
-
googleplay是一款谷歌开发的、用于帮助用户加快游戏软件运转速度的软件。该软件可以快速与谷歌游戏中心连接,从而加快游戏同步数据的传输。 如果用户不需要使用该软件了,则可以尝试直接使用卸载功能卸...
- 单人枪战单机游戏(单人枪战闯关游戏)
-
有胡闹厨房,NBA2K,Knack纳克,光环战斗进化,杀手5赦免。钓鱼星球。神鬼寓言,战争机器,精灵与森林,盗贼之海,丧尸围城枪火重生,这是融合了第一人称射击、Roguelite随机元素和RPG策略...
- 三国战纪街机版下载(三国战纪街机版下载教程)
-
三国战纪单机手机版非常容易上手,可以通过以下步骤进行玩耍:容易上手。游戏的操作非常简单,只需要用手指点击屏幕即可完成。游戏同时提供了简单、普通、困难等多个难度设置,能够满足不同玩家的需求。在游戏中,玩...
- 永久免费的网盘哪个好用(百度网盘登录入口)
-
现在的网盘很多都是免费的哦,而且也很安全,我自己就在用天翼云网盘。天翼云虽然刚登陆是15G,但是现在登陆客户端就有10T的容量了,可以存很多东西了。天翼云网盘还有个挺好的功能叫做私密空间,每次登陆都要...
- 热血传奇官方正版下载(热血传奇官网下载安装)
-
1.可以通过官方网站或者应用商店下载热血传奇。2.热血传奇作为一款热门的网络游戏,开发商通常会提供官方网站或者在应用商店上架,方便玩家下载和安装。3.此外,还可以通过一些第三方游戏平台或者论坛等...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
16949认证费用是多少(16949审核员太难考了)
-
linux软件(linux软件图标)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
