Hello Playwright:(7)模拟键盘和鼠标
尽管在上一节中,我们已经能够通过FillAsync
或ClickAsync
来实现输入和点击元素。但是,还有其他场景,我们必须模拟用户使用键盘、鼠标与页面交互。例如在线文档:
Page.Keyboard 对象
Keyboard
提供用于管理虚拟键盘的 API,它会在 page 上生成正确的 keydown、keypress 和 keyup 事件。
例如,实现下列流程:
按住 Shift 键输入字符 a,得到大写字母 A
按实际大小写输入字符 Bc
按住 Shift 键不放,再按 3 次左箭头, 再释放 Shift 键,达到选中 ABc 的目的
输入 Backspace 键,删除选中文本
输入文本 MyIO
代码如下:
await page.Keyboard.PressAsync("Shift+KeyA");
await page.Keyboard.TypeAsync("Bc");await page.Keyboard.DownAsync("Shift");
for (var i = 0; i <3; i++)await page.Keyboard.PressAsync("ArrowLeft");
await page.Keyboard.UpAsync("Shift");await page.Keyboard.PressAsync("Backspace");await page.Keyboard.InsertTextAsync("MyIO");
这里使用了 3 个不同的输入方法:
PressAsync
,输入单个字符,可以和修饰键(例如 Shiift)组合使用TypeAsync
, 逐个输入单个字符InsertTextAsync
,输入文本,特别之处在于它不会引发 keydown, keyup 或者 keypress 事件
Page.Mouse 对象
Mouse
提供用于管理虚拟鼠标的 API,原点坐标为页面 MainFrame 视图的左上角。
例如,实现下列流程:
鼠标移动到"更多"链接
右键单击"翻译"图标
代码如下:
var moreLink = page.Locator("//*[@id=\"s-top-left\"]/div");
var box = await moreLink.BoundingBoxAsync();
await page.Mouse.MoveAsync(box.X , box.Y );var moreDiv = page.Locator("id=s-top-more");
box = await moreDiv.BoundingBoxAsync();
await page.Mouse.ClickAsync(box.X + (box.Width / 3 / 2), box.Y + (box.
Height / 3 / 2), new MouseClickOptions { Button = MouseButton.Right });
在这里我们使用了一个小技巧,不需要猜测"更多"链接所处的位置。Locator
提供了一个叫做BoundingBoxAsync
的方法,它返回元素的位置(X 和 Y)和大小(宽度和高度)。
通过元素所在位置和大小,我们可以精确控制鼠标位置,而无需担心 UI 分辨率不同而对操作造成干扰。
添加微信号【MyIO666】,邀你加入技术交流群
Hello Playwright:(7)模拟键盘和鼠标相关推荐
- .net中模拟键盘和鼠标操作
周银辉 其实SendKeys类提供的方法蛮好用的,可惜的是WPF中不能用了,说是WPF的消息循环方式改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys. ...
- 模拟键盘、鼠标操作或Windows hook 在部分软件失效的问题
用户界面权限隔离(UIPI) 在Windows中的权限系统 除了在进程之间提供内核对象的访问保护,窗口系统还利用完整性级别来拒绝低完整性级别的进程访问/更新高完整性级别的进程的用户界面.这个机制称为用 ...
- 使用JS模拟键盘、鼠标操作
//只在chrome测试过,大部分应用场景在webkit,所以不做其他兼容// 模拟键盘输入 window.inputValue = function (dom, st) {var evt = new ...
- selenium3.0模拟键盘、鼠标操作
对于一些功能组合键,如 Fn + NmLk 来关闭或者打开数字键,或者 Alt+PrtSC 来抓取当前屏幕的活动窗口并保存到图片,通过 WebDriver 的 Keys 是没办法操作的. 这个时候我们 ...
- 模拟键盘、鼠标 mouse_event keybd_event
MSDN 讲解:http://msdn.microsoft.com/en-us/library/ms646304(v=vs.85).aspx 中文讲解:http://dev.firnow.com/co ...
- C语言 模拟键盘、鼠标事例
#include<stdio.h> #include<stdlib.h> #include<Windows.h> /* 本程序实现自动搜索功能,首先是使用 Shel ...
- python模拟键盘输入视频_python教程-模拟鼠标和键盘输入
大家可能知道,有的情形下,如果我们需进行自动化操作的应用程序不提供相对应的的接口,就难以通过Python直接调用API来做到自动化.在此类情形下,Python也并非压根没有办法,我们可以通过模拟键盘和 ...
- 【Win32 API学习】模拟键盘输入和鼠标输入
在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输 ...
- Cypress之模拟键盘鼠标操作以及页面元素拖动操作
上篇文章讲解了使用cypress框架时,如何上传或者下载文件,以及定位操作iframe和shadow dom下的页面元素.此次课程将讲解如何模拟键盘输入.鼠标操作以及如何拖动页面元素,另外,会介绍如何 ...
最新文章
- 开源库jemalloc简介
- [转载]给IT人员支招:如何跟业务部门谈需求分析?
- 全球及中国一次性造口袋行业发展前景预测及投资价值分析报告2021-2027年版
- Testin云測与ARM 战略合作:推动全球移动应用加速进入中国市场
- Python 依赖库
- Linux下后台执行java程序
- MakerDAO新增renBTC和UNI作为Dai抵押品
- 现实世界的Windows Azure:采访Applied Information Science的技术总监Vishwas Lele
- 学python需要什么基础-要学 Python 需要怎样的基础?
- python-excel写入代码1
- pdfplumber库解析pdf格式
- pygame判断鼠标左键_鼠标科普,选对鼠标用好鼠标。
- java 集合对象转map的几种方式(stream流)
- 概率统计Python计算:离散型2-维随机向量的联合分布律及边缘分布
- 微信小程序图片转换成文字_涨知识!这个微信小程序,能将纸上文字转换成电子版...
- html实现图片裁剪,JavaScript html js图片切割系统,裁剪,图片处理
- css 压缩后出现了问题,觉得js或css压缩后不好调试?你应该认识一下source map了...
- 作为老师的一些思考(二)
- Linux系统编程——execl函数族
- 使用oracle.jdbc.OracleDriver