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)

posted @ 2024-03-21 11:06  测试_老姜  阅读(42)  评论(0)    收藏  举报