最强自动化测试框架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)

扫描二维码关注公众号,回复: 16173986 查看本文章

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

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_playwright

def run(playwright):
    chromium = playwright.chromium
    browser = 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.value
    print(download.page)
    # wait for download to complete
    print(download.url)  # 获取下载的url地址
    # 这一步只是下载下来,生成一个随机uuid值保存,代码执行完会自动清除
    print(download.path())
    # 最终可以用save_as 保存到本地
    download.save_as(download.suggested_filename)

    browser.close()

with sync_playwright() as playwright:
    run(playwright)

 

猜你喜欢

转载自blog.csdn.net/seanyang_/article/details/132249127
今日推荐