首页 > 编程语言 >《最新出炉》系列入门篇-Python+Playwright自动化测试-55- 上传文件 (非input控件)- 中篇

《最新出炉》系列入门篇-Python+Playwright自动化测试-55- 上传文件 (非input控件)- 中篇

时间:2024-07-27 22:17:32浏览次数:7  
标签:控件 Playwright 文件 Python chooser file input 上传 page

1.简介

在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。所以宏哥打算按上传文件的分类对其进行一下讲解和分享。

2.上传文件的API(非input控件)

Playwright是一个现代化的自动化测试工具,它支持多种浏览器和操作系统,可以帮助开发人员和测试人员轻松地构建和运行可靠的端到端测试。除了测试功能之外,Playwright还提供了一些实用工具和API,其中包括文件上传和下载的功能。这些功能可以帮助用户模拟用户上传或下载文件的场景,并验证这些操作是否按预期执行。在本文中,我们将探讨如何在Playwright中实现文件上传,并提供一些示例代码和最佳实践。
比如:平台上面的上传功能,会提供一个模板(如excel,csv),此时,我们就需要下载这个模板,修改完成后,再上传,作为测试人员,我们需要验证它是否已下载到本地。

上传文件介绍官方API的文档地址:Page | Playwright Python

2.1上传文件语法

如果您手头没有输入元素input(它是动态创建的非input),您可以处理 page.on("filechooser") 事件或在您的操作中使用相应的等待方法:

with page.expect_file_chooser() as fc_info:
    page.get_by_label("Upload file").click()
file_chooser = fc_info.value
file_chooser.set_files("myfile.pdf")

几个操作方法

  • file_chooser.element 返回与此文件选择器关联的输入元素。
  • file_chooser.is_multiple() 返回此文件选择器是否接受多个文件。
  • file_chooser.page 返回此文件选择器所属的页面。

设置与此选择器关联的文件输入的值。如果其中一些filePaths是相对路径,那么它们将相对于当前工作目录进行解析。对于空数组,清除所选文件。

file_chooser.set_files(files)
file_chooser.set_files(files, **kwargs)

几个参数

  • files pathlib.Path
  • no_wait_after 启动导航的操作正在等待这些导航发生并等待页面开始加载。您可以通过设置此标志来选择退出等待。您仅在特殊情况下才需要此选项,例如导航到无法访问的页面。默认为false.
  • timeout 以毫秒为单位的最长时间,默认为 30 秒,传递0以禁用超时。可以使用browser_context.set_default_timeout()或page.set_default_timeout()方法更改默认值。

2.2上传文件demo

不是input输入框,必须点开文件框的情况(selenium上没法实现的操作)

可以使用page.expect_file_chooser() 监听到弹出框,在弹出框上输入文件路径,代码如下:

with page.expect_file_chooser() as fc_info:

    page.get_by_label("选择文件").click()

    page.pause()

file_chooser = fc_info.value

file_chooser.set_files(path)

在运行过程中你是感知不到文件选项框弹出来的.

3.上传文件分类

首先,我们要区分出上传按钮的种类,大体上可以分为两种,一种是input框,另外一种就比较复杂,通过js、flash等实现,标签非input。

上传文件有两种场景:input控制上传和非input控件上传。大多数情况都是input控件上传文件,只有非常少数的使用自定义的非input上传文件。今天宏哥这一篇文章就用来介绍非input控件上传文件。

4.非input控件上传文件

4.1什么是非input控件上传文件

在web系统中,文件上传功能有的是非标准的上传文件功能(非input控件上传),什么是非标准的文件上传功能,我们来看下图的文件上传功能,如下图所示:

 在上图中,选择文件按钮对应的html源码中标签为img,这种元素就是非标准的上传功能。

5.项目实战

宏哥在这个网站:https://www.jq22.com/ 找了一个demo,进行演示。

5.1代码设计

5.2参考代码

# coding=utf-8

标签:控件,Playwright,文件,Python,chooser,file,input,上传,page
From: https://www.cnblogs.com/du-hong/p/18128071

相关文章

  • Python 实现行为驱动开发 (BDD) 自动化测试详解
    在当今的软件开发领域,行为驱动开发(BehaviorDrivenDevelopment,BDD)作为一种新兴的测试方法,逐渐受到越来越多开发者的关注和青睐。Python作为一门功能强大且易于使用的编程语言,在实现BDD方面也有着独特的优势。那么,如何利用Python实现BDD自动化测试呢?本文将为你详细解析。如何......
  • Python 实现行为驱动开发 (BDD) 自动化测试详解
    ​ 在当今的软件开发领域,行为驱动开发(BehaviorDrivenDevelopment,BDD)作为一种新兴的测试方法,逐渐受到越来越多开发者的关注和青睐。Python作为一门功能强大且易于使用的编程语言,在实现BDD方面也有着独特的优势。那么,如何利用Python实现BDD自动化测试呢?本文将为你详细解析。如......
  • 【python学习】retry库用法大全!附示例代码
    Retry是一个用于Python的库,用于在函数调用失败时自动重试。它的目标是简化重试逻辑的编写,处理由于临时性问题(如网络故障、API限制等)导致的失败。Retry的主要特点包括:简单易用:只需使用装饰器或上下文管理器即可实现重试功能。灵活配置:可以配置重试次数、重试间隔、异常......
  • 最长的Hello, World!(Python)
    最长的Hello,World!(Python)(lambda_,__,___,____,_____,______,_______,________:getattr(__import__(True.__class__.__name__[_]+[].__class__.__name__[__]),().__class__.__eq__.__class__.__name__[:__]+().__iter__().__cla......
  • Python 教程(二):语法与数据结构
    目录前言专栏列表语法特点实例代码基本数据类型变量命名规则赋值动态类型作用域示例代码运算符`list`、`set`和`dict`数据结构区别1.list(列表)2.set(集合)3.dict(字典)总结前言Python是一种计算机编程语言。每种编程语言都有自己的语法规则。在本教程中,我们将学......
  • Python 可变长参数的魔法:灵活函数设计的秘密
    哈喽,大家好,我是木头左!什么是可变长参数?在Python中,可变长参数允许你向函数传入任意数量的参数,而无需预先定义它们的个数。这为编写更加灵活和通用的函数提供了可能。可变长参数主要有两种形式:*args用于非关键字参数,**kwargs用于关键字参数。*args:非关键字可变长参数当你......
  • 【每日一练】python求最后一个单词的长度
    """求某变量中最后一个单词的长度例如s="Goodmorning,champ!You'regoingtorockthisday"分析思路:   遇到字符串问题,经常和列表结合使用来解决,   可以先用列表的.split()分割方法进行单词分割,   再用取列表以后一个元素s[-1],最后用len()方法输出长度......
  • 【掌握推荐预测的王】基于Python Surprise库的实践指南
    构建个性化旅游路线推荐系统:基于PythonSurprise库的实践指南摘要随着大数据和人工智能技术的发展,个性化推荐系统在各行各业得到广泛应用。本文将介绍如何利用Python的Surprise库构建一个个性化的旅游路线推荐系统。通过协同过滤等算法,系统能够根据用户的历史行为和偏好,推......
  • Python调用ChatTTS API接口
    Python调用ChatTTSAPI接口:#*********************************************#author:wgscd#date:2024-7-27#installlist:#pipinstallfastapi#pipinstallrequests#pipinstalluvicorn[standard]#在命令行中运行以下命令来启动服务器:#uvicornmain:app--reload......
  • Python 中的正反斜杠用法详解
    在Python编程中,字符串是一个常用的数据类型,字符串中的斜杠(反斜杠\和正斜杠/)具有特殊的用法和意义,本文将介绍这两种斜杠的用法。一、反斜杠的转义作用在Python中,反斜杠(\)被称为转义字符,它常用于两个主要目的。1.引入特殊字符反斜杠可以用来引入特殊字符序列,这些序列在Py......