最强自动化测试框架Playwright(4)-控件操作

2023-11-14

文本输入

适用于input、textarea、其他可编辑内容的元素。

# Text input
page.get_by_role("textbox").fill("Peter")

# Date input
page.get_by_label("Birth date").fill("2020-02-02")

# Time input
page.get_by_label("Appointment time").fill("13:15")

# Local datetime input
page.get_by_label("Local time").fill("2020-03-02T05:15")

单选框复选项

对单选框复选框进行勾选,使用is_checked()方法判断选中状态。

适用于input[type=checkbox]、 input[type=radio][role=checkbox]

# Check the checkbox
page.get_by_label('I agree to the terms above').check()

# Assert the checked state
assert page.get_by_label('Subscribe to newsletter').is_checked() is True

# Select the radio button
page.get_by_label('XL').check()

下拉框选择

可以根据value或者label来选择下拉框,也可以进行多选。

# Single selection matching the value
page.get_by_label('Choose a color').select_option('blue')

# Single selection matching the label
page.get_by_label('Choose a color').select_option(label='Blue')

# Multiple selected items
page.get_by_label('Choose multiple colors').select_option(['red', 'green', 'blue'])

鼠标点击

可以对元素进行单击,双击、右键点击、组件键单击、悬浮、按照坐标单击。

# Generic click
page.get_by_role("button").click()

# Double click
page.get_by_text("Item").dblclick()

# Right click
page.get_by_text("Item").click(button="right")

# Shift + click
page.get_by_text("Item").click(modifiers=["Shift"])

# Hover over element
page.get_by_text("Item").hover()

# Click the top left corner
page.get_by_text("Item").click(position={ "x": 0, "y": 0})

强制点击

page.get_by_role("button").click(force=True)

程序化点击

page.get_by_role("button").dispatch_event('click')

 键入字符

逐个在文本框输入字符,模拟用户使用键盘进行操作。

# Type character by character
page.locator('#area').type('Hello World!')

此方法将发出所有必需的键盘事件,可以在按键之间指定可选,以模拟真实的用户行为

也传入delay参数,以较慢的速度输入

   element.type(\"world\", delay=100) # types slower, like a user

 在输入文本后,可以对元素发出键盘按键事件,如按下Enetr,

 element = page.get_by_label(\"Password\")
        element.type(\"my password\")
        element.press(\"Enter\")

按键和快捷键

# Hit Enter
page.get_by_text("Submit").press("Enter")

# Dispatch Control+Right
page.get_by_role("textbox").press("Control+ArrowRight")

# Press $ sign on keyboard
page.get_by_role("textbox").press("$")

locator.press() 方法聚焦所选元素并生成单个击键。它接受键盘事件的 keyboardEvent.key 属性中发出的逻辑键名:

Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape,
ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight,
ArrowUp, F1 - F12, Digit0 - Digit9, KeyA - KeyZ, etc.
  • 您也可以指定要生成的单个字符,例如 或 。"a""#"
  • 还支持以下修改快捷方式:。Shift, Control, Alt, Meta

简单版本生成单个字符。此字符区分大小写,因此 和 将产生不同的结果。"a""A"

# <input id=name>
page.locator('#name').press('Shift+A')

# <input id=name>
page.locator('#name').press('Shift+ArrowLeft')

上传文件

可以使用 locator.set_input_files() 方法选择要上传的输入文件。它期望第一个参数指向类型为 .可以在数组中传递多个文件。如果某些文件路径是相对的,则相对于当前工作目录解析它们。空数组将清除选定的文件。"file"

# Select one file
page.get_by_label("Upload file").set_input_files('myfile.pdf')

# Select multiple files
page.get_by_label("Upload files").set_input_files(['file1.txt', 'file2.txt'])

# Remove all the selected files
page.get_by_label("Upload file").set_input_files([])

# Upload buffer from memory
page.get_by_label("Upload file").set_input_files(
    files=[
        {"name": "test.txt", "mimeType": "text/plain", "buffer": b"this is a test"}
    ],
)

焦点元素

对于处理焦点事件的动态页面,您可以使用 locator.focus() 聚焦给定元素。

拖放

可以使用 locator.drag_to() 执行拖放操作。此方法将:

  • 将鼠标悬停在要拖动的元素上。
  • 按鼠标左键。
  • 将鼠标移动到将接收丢弃的元素。
  • 松开鼠标左键。
page.locator("#item-to-be-dragged").drag_to(page.locator("#item-to-drop-at"))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最强自动化测试框架Playwright(4)-控件操作 的相关文章

  • 你好,面试官-秋招面经C++持续更新

    C 指针和引用的区别 指针常量和常量指针的区别 sizeof 和 strlen 的区别 const关键字 static关键字 C 中struct和class的区别 new malloc和deete free的区别 宏定义和typedef区别

随机推荐

  • C1 ARMv7-M Debug

    C1 1 Introduction to ARMv7 M debug This section describes the debug architecture for the ARMv7 M architecture profile Th
  • python消消乐游戏界面的实现:

    一 环境介绍 1 Python 版本 Python 消消乐游戏可以在 Python 2 7 和 Python 3 x 版本中运行 2 Pygame 模块 Python 消消乐游戏需要使用 Pygame 模块来实现游戏界面和图形绘制等功能 如
  • DP线和HDMI线区别,优缺点,传输显示器图像速率

    参考DP接口与HDMI接口各有什么优势 哪个更好 资料来源于网络 仅供参考 最近在x宝上买显示器的线 看到各种hdmi dp版本的线 2 0 dp1 4 4k 8k typec转三口hdmi 可把我看昏了 在网上收集了一些资料用于总结 以及
  • QMUI 学习一: 入门,如何添加QMUI框架到 android项目 ,并引入QMUI的主题Theme:

    用是最新的Android Studio 3 6 x的 下了新的QMUI Demo参考学习UI 先上效果图 如何添加QMUI框架并引用它的主题 1 添加框架 在app gradle里面添加依赖 implementation com qmuit
  • 感知器算法实现多类样本的线性分类(Matlab)

    原理 略 步骤 二分类问题 1 将第一类样本作为正样本 第二类样本作为负样本 首先 对样本的向量空间进行增广 即对n维向量x的首部或者尾部增加一个参数1 增广为 n 1 维向量 并对其进行规范化 即正样本不做处理 负样本的 n 1 维向量取
  • web buuctf [极客大挑战 2019]Knife1

    题目给出得信息量是一句话木马 文本里面有一个 菜刀 字眼 可以尝试一下用中国菜刀 现在大部分都是用蚁剑 测试连接 提示成功 将该数据添加到界面上 点进去 点到根目录 在最下面有一个flag文件 点开即可 这道题考点 1 一句话木马 2 中国
  • 液晶显示器汉字字模存储及显示

    一 3 种汉字字模存储和提取的方法 1 字模存放在程序存储器中 这种方法较为常用 针对程序不大或单片机无外部扩展数据存储区功能的情况 2 通过外扩的EEPROM 存储汉字字模数据 将其作为外部数据存储器进行寻址 采用哈佛结构的单片机 如80
  • 罗小黑用flash做的_Flash动画制作小黑人经典动画效果技巧介绍(图文)

    本教程是向大家介绍Flash动画制作小黑人经典动画效果技巧 教程很经典 介绍的非常详细 相信对学习Flash朋友有一定的帮助 转发过来 希望对大家有所帮助 解决思路 小黑人动作是典型的人物动作 我们利用小黑人可以练习我们对人物动作的掌握 因
  • 带优美外观的UserControl控件GroupBox

    http www myfirm cn news DotNetUserInterface 20080208095730391 html 写在前面 如果大家觉得 Net自带的GroupBox控件太差了 样子很不美观 而想用 Net强大的自定义功
  • 【MyBatis】 动态SQL——模糊查询 LIKE

    一 LIKE SELECT FROM t usr WHERE name like name SQL解析为 SELECT FROM t usr WHERE name like 海 可以看到 传参必须用 不能用 所以这样写的弊端就是不安全 不能
  • 腾讯家低调开发的良心工具?目前无任何付费机制还挺好用~

    去年 Tik Tok Clipping 和哔哩哔哩 Clipping 相继推出了自己的桌面编辑软件 相比专业首演 无论是操作逻辑还是内置素材库 它们都能让非专业人士更容易上手 大大降低创作门槛 但还是有朋友反馈电脑不能动 实在没办法动 只好
  • 在macOS上安装NodeJS多版本管理工具

    需求 现在Node js也有很多的版本啦 简单地使用某个版本 只需要去下载安装对应版本就可以了 如果需要多个版本在机器上共存 并在需要时切换到相应的版本环境 这时候就需要多版本的管理工具了 而 n nvm就是这个有效的工具 简介 NVM 即
  • 【SQL注入-无回显】时间盲注:原理、函数、利用过程

    目录 一 时间盲注 延时 1 1 简介 1 2 原理 二 常用函数 2 1 延迟函数 编辑 2 2 相关函数 2 3 示例语句 三 利用过程 3 1 第一步 判断注入点 3 2 第二步 判断可使用注入方法 3 3 第三步 猜数据库名称长度
  • springBoot 部署Docker环境中

    目录 一 准备 二 docker运行环境 三 DockerFile 四 制作镜像 五 启动容器 六 访问 一 准备 需要打好的 jar 包 这里不再赘述 docker 环境 二 docker运行环境 安装JDK docker pull pr
  • monkeyrunner之夜神模拟器的安装与使用(二)

    在上一篇文章 安卓开发环境搭建中 我们创建并启动了eclipse自带的安卓模拟器 该模拟器不仅启动慢 而且在使用过程中的反应速度也是出奇的差 经常出现卡机现象 为了解决这种现象 因此 我们又寻找到了更加合适的模拟器 夜神模拟器 该模拟器除了
  • JavaScript离线手册 w3c(w3school) 百度网盘

    听尚硅谷李超老师课 感觉离线文档特别实在 JavaScript w3school 离线分享 baidu wangpan 链接 https pan baidu com s 1AwMZy2MpvxzBtePtDp39nQ pwd imle 提取
  • 【Zabbix实战之部署篇】Zabbix监控windows系统配置方法

    Zabbix实战之部署篇 Zabbix监控windows系统配置方法 一 检查Zabbix监控平台状态 1 检查Zabbix各组件状态 2 检查Zabbix的首页 二 下载windows代理 1 访问Zabbix官网下载界面 2 查看下载安
  • Redis 分布式集群搭建

    转 https blog csdn net daybreak1209 article details 51493265 在Redis的安装和部署 Linux 一文中详细介绍了在Linux环境中搭建Redis服务 本文将介绍关于Redis分布
  • python如何不生成pyc文件(三种方式)

    python如何不生成pyc文件 三种方式 当 import导入另一个模块的时候会生成pyc文件 python3会生成 pycache 如何不生成编译文件呢 1 使用 B参数 即 python3 B test py 里面的包含的就不会生成p
  • 最强自动化测试框架Playwright(4)-控件操作

    文本输入 适用于input textarea 其他可编辑内容的元素 Text input page get by role textbox fill Peter Date input page get by label Birth date