36新一代自动化测试神器playwright+python系列课程_playwright_文件上传_非标准文件上传功能
36_playwright_文件上传_非标准文件上传功能
系统有的文件上传功能不是标准的文件上传功能,我们以禅道的新建用例中的添加文件为例,这个添加文件按钮的html源码显示,它的标签不是input,type也不等于file,这种上传文件功能就是非标准文件上传功能。
这种非标准的文件上传功能,要想实现文件上传就需要使用expect_file_chooser()方法来监听点击添加文件按钮事件,监听到后再结合set_files(上传文件路径)实现文件上传。
实践代码:
# '''
# author: 测试-老姜 交流微信/QQ:349940839
# 欢迎添加微信或QQ,加入学习群共同学习交流。
# QQ交流群号:877498247
# 西安的朋友欢迎当面交流。
# '''
from playwright.sync_api import Playwright, sync_playwright, expect
import re
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("http://127.0.0.1/zentao/user-login.html")
page.locator("#account").fill("admin")
page.locator("input[name=\"password\"]").click()
page.locator("input[name=\"password\"]").fill("Deshifuzhi01")
page.get_by_role("button", name="登录").click()
page.wait_for_timeout(2000)
page.goto('http://127.0.0.1/zentao/testcase-create-1-0-0.html')
page.wait_for_timeout(1000)
page.frame_locator("iframe[name=\"app-qa\"]").locator("#title").fill("111")
# 监听点击添加文件按钮事件
with page.expect_file_chooser() as f:
page.frame_locator("iframe[name=\"app-qa\"]").locator('text=添加文件').last.click()
page.wait_for_timeout(1000)
#完成添加文件
f.value.set_files(r'D:\jyc\高新四小2022—2023学年第二学期“美德之星”登记表(1).doc')
page.wait_for_timeout(4000)
#点击保存,文件上传成功
page.frame_locator("iframe[name=\"app-qa\"]").get_by_role("button", name="保存").click()
page.wait_for_timeout(2000)
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)

浙公网安备 33010602011771号