大家好,我是阿萨。昨天学习了如何下载内容。 肯定有人会问上传的用例如何写。今天就来看看如何上传。
上传文件
你可以使用locator.set_input_files()方法选择输入文件进行上传。它希望第一个参数指向一个类型为 "file "的输入元素。在数组中可以传递多个文件。
如果某些文件的路径是相对的,它们将被解析为相对于当前工作目录。空数组会清除所选文件。
同步:
# 选择一个上传文件page.get_by_label("Upload file").set_input_files('myfile.pdf')# 选择多个上传文件page.get_by_label("Upload files").set_input_files(['file1.txt', 'file2.txt'])# 删除所有选择的文件page.get_by_label("Upload file").set_input_files([])# 从内存中上传page.get_by_label("Upload file").set_input_files( files=[ {"name": "test.txt", "mimeType": "text/plain", "buffer": b"this is a test"} ],)
异步:
# 选择一个文件await page.get_by_label("Upload file").set_input_files('myfile.pdf')# 选择多个文件await page.get_by_label("Upload files").set_input_files(['file1.txt', 'file2. txt'])# 删除所有选中的文件await page.get_by_label("Upload file").set_input_files([])# 从内存中上传缓冲区await page.get_by_label("Upload file").set_input_files( files=[ {"name": "test.txt", "mimeType": "text/plain", "buffer": b"this is a test"} ],)
如果你手上没有输入元素(它是动态创建的),你可以用page.on("filechooser")事件或在你的动作中使用相应的等待方法。
同步:
with page.expect_file_chooser() as fc_info: await page.get_by_label("Upload file").click()file_chooser = await fc_info.valuefile_chooser.set_files("myfile.pdf")
异步:
async with page.expect_file_chooser() as fc_info: await page.get_by_label("Upload file").click()file_chooser = await fc_info.valueawait file_chooser.set_files("myfile.pdf")