playwright文件的上传和下载

时间:2025-11-01 20:14:03  阅读量:  分类:标签:

课程笔记

上传文件: 1.常用方式为获取元素定位//input【@type="file"】 大部分情况都可以取到该文件,使用set_input_files选择要上传的文件来进行上传,这里有相对路径和绝对路径,一般我们会以项目为基础取相对路径 2.另外一种用with,取expect_file_chooser ,用chooser来进行操作 3.这里用到一种元素定位方式,若一个元素在页面有多个,但是我们只取最后一个,可以直接使用last来进行获取,较为常用 4.使用chooser时,选择文件的方法是chooser.value.set_files



from playwright.sync_api import Page,expect

def test_pw_upload(page: Page):
    page.goto( "/demo/upload", wait_until="networkidle")
    page.locator('//input[@type="file"]').set_input_files("E:\playwright\play.py")  #支持单个文件,多个文件\.set_input_files上传文件.[必须是input]
    expect(page.get_by_text("uploaded").last).to_be_visible()#断言
    #第二种上传方式
    with page.expect_file_chooser() as chooser:  #pw只要检测到弹出窗口就往里塞东西的功能
        page.locator("a").last.click() #last,页面上最后一个A,进行点击操作.
    chooser.value.set_files("E:\playwright\pytest.ini")
    expect(page.get_by_text("uploaded").last).to_be_visible()#断言
    page.wait_for_timeout(5000)
    page#断点


文件下载操作

课程总结:

1.使用with来监听下载文件,获取文件的值。其中使用expect_download

2.通过with获取到file后,将其保存为某个文件1.txt

3.使用assert(非playwright,为自带)来判断文件1.txt是否存在


import os.path

from playwright.sync_api import Page,expect

def test_pw_download(page: Page):
    page.goto( "/demo/download", wait_until="networkidle")
    page.locator("textarea").fill("123456") #填写文件内容
    with page.expect_download() as file:   #监听
        page.get_by_text("Download").click()  #点击下载
    file.value.save_as("123.txt")  #设置文件名
    assert os.path.exists("123.txt")  #python提供的断言,判断123.txt是否为true
    page#断点

page.expect_download() 是 Playwright 测试框架中的一个方法,用于等待并捕获页面触发的文件下载