【问题标题】:How to download PDF files with Playwright? (Python)如何使用 Playwright 下载 PDF 文件? (Python)
【发布时间】:2021-09-25 06:32:58
【问题描述】:

我正在尝试使用 Playwrgith 自动下载 PDF 文件,我的代码与 Selenium 一起使用,但 Playwright 中的一些功能引起了我的注意。真正的问题the documentation 没有帮助。当我点击下载时,我得到了这个:

而且我无法更改下载目录,当浏览器/上下文关闭时,它也会删除“文件”。使用 Playwright 可以实现不错的下载自动化?

代码:

def run(playwright):
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context(accept_downloads=True)

    # Open new page
    page = context.new_page()

    # Go to http://xcal1.vodafone.co.uk/
    page.goto("http://xcal1.vodafone.co.uk/")

    # Click text=Extra Small File 5 MB A high quality 5 minute MP3 music file 30secs @ 2 Mbps 10s >> img
    with page.expect_download() as download_info:
        page.click("text=Extra Small File 5 MB A high quality 5 minute MP3 music file 30secs @ 2 Mbps 10s >> img")
    download = download_info.value
    path = download.path()
    download.save_as(path)
    print(path)

    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

【问题讨论】:

    标签: python playwright playwright-python


    【解决方案1】:

    playwright 中的download.path() 只是一个随机的 GUID(全局唯一标识符)。它旨在验证下载是否有效,而不是保留文件。

    Playwright 是一个测试工具,想象一下在每个主要浏览器上对每次代码更改运行测试 - 任何下载都会很快占用大量空间,如果您需要手动清除它们,它会阻止人们。

    好消息是您非常接近 - 如果您想保留文件,您只需在 save_as 中为文件命名。

    而不是这个:

       download.save_as(path)
    

    使用这个:

       download.save_as(download.suggested_filename)
    

    这会将文件保存在与脚本相同的位置。

    【讨论】:

    • 我不同意“剧作家是一种测试工具”的说法。它是一个浏览器自动化工具(“playwright”)以及一个测试工具(“@playwright/test”)。感谢您的回答! ?
    猜你喜欢
    • 2021-03-19
    • 2022-01-23
    • 2020-07-09
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 2018-11-13
    相关资源
    最近更新 更多