playwright文件的上传和下载
课程笔记
上传文件: 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 测试框架中的一个方法,用于等待并捕获页面触发的文件下载。