尽管在上一节中,我们已经能够通过FillAsyncClickAsync来实现输入和点击元素。但是,还有其他场景,我们必须模拟用户使用键盘、鼠标与页面交互。例如在线文档:

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)模拟键盘和鼠标相关推荐

  1. .net中模拟键盘和鼠标操作

    周银辉 其实SendKeys类提供的方法蛮好用的,可惜的是WPF中不能用了,说是WPF的消息循环方式改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys. ...

  2. 模拟键盘、鼠标操作或Windows hook 在部分软件失效的问题

    用户界面权限隔离(UIPI) 在Windows中的权限系统 除了在进程之间提供内核对象的访问保护,窗口系统还利用完整性级别来拒绝低完整性级别的进程访问/更新高完整性级别的进程的用户界面.这个机制称为用 ...

  3. 使用JS模拟键盘、鼠标操作

    //只在chrome测试过,大部分应用场景在webkit,所以不做其他兼容// 模拟键盘输入 window.inputValue = function (dom, st) {var evt = new ...

  4. selenium3.0模拟键盘、鼠标操作

    对于一些功能组合键,如 Fn + NmLk 来关闭或者打开数字键,或者 Alt+PrtSC 来抓取当前屏幕的活动窗口并保存到图片,通过 WebDriver 的 Keys 是没办法操作的. 这个时候我们 ...

  5. 模拟键盘、鼠标 mouse_event keybd_event

    MSDN 讲解:http://msdn.microsoft.com/en-us/library/ms646304(v=vs.85).aspx 中文讲解:http://dev.firnow.com/co ...

  6. C语言 模拟键盘、鼠标事例

    #include<stdio.h> #include<stdlib.h> #include<Windows.h> /* 本程序实现自动搜索功能,首先是使用 Shel ...

  7. python模拟键盘输入视频_python教程-模拟鼠标和键盘输入

    大家可能知道,有的情形下,如果我们需进行自动化操作的应用程序不提供相对应的的接口,就难以通过Python直接调用API来做到自动化.在此类情形下,Python也并非压根没有办法,我们可以通过模拟键盘和 ...

  8. 【Win32 API学习】模拟键盘输入和鼠标输入

    在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输 ...

  9. Cypress之模拟键盘鼠标操作以及页面元素拖动操作

    上篇文章讲解了使用cypress框架时,如何上传或者下载文件,以及定位操作iframe和shadow dom下的页面元素.此次课程将讲解如何模拟键盘输入.鼠标操作以及如何拖动页面元素,另外,会介绍如何 ...

最新文章

  1. 开源库jemalloc简介
  2. [转载]给IT人员支招:如何跟业务部门谈需求分析?
  3. 全球及中国一次性造口袋行业发展前景预测及投资价值分析报告2021-2027年版
  4. Testin云測与ARM 战略合作:推动全球移动应用加速进入中国市场
  5. Python 依赖库
  6. Linux下后台执行java程序
  7. MakerDAO新增renBTC和UNI作为Dai抵押品
  8. 现实世界的Windows Azure:采访Applied Information Science的技术总监Vishwas Lele
  9. 学python需要什么基础-要学 Python 需要怎样的基础?
  10. python-excel写入代码1
  11. pdfplumber库解析pdf格式
  12. pygame判断鼠标左键_鼠标科普,选对鼠标用好鼠标。
  13. java 集合对象转map的几种方式(stream流)
  14. 概率统计Python计算:离散型2-维随机向量的联合分布律及边缘分布
  15. 微信小程序图片转换成文字_涨知识!这个微信小程序,能将纸上文字转换成电子版...
  16. html实现图片裁剪,JavaScript html js图片切割系统,裁剪,图片处理
  17. css 压缩后出现了问题,觉得js或css压缩后不好调试?你应该认识一下source map了...
  18. 作为老师的一些思考(二)
  19. Linux系统编程——execl函数族
  20. 使用oracle.jdbc.OracleDriver

热门文章

  1. 股票现金流量表的爬取(有局限性)
  2. 华为自带免费测试软件,手机测速软件哪家强 华为推“一键测速”免费无广告...
  3. 局域网内无线路由器太多的方法
  4. 用 EPWA 写一个 漫画阅读器 ComicReader
  5. 抖音信息流广告是什么
  6. 在网关gateway聚合swagger文档
  7. 二期结业考试(北京市雨量监测信息管理)
  8. 内蒙古经贸学校计算机专业好,内蒙古十大中职学校排行榜
  9. [收集]什么是父表和子表
  10. 手机来电显示软件测试大乐,手机软件测试的经验总结