Hello Playwright:(7)模拟键盘和鼠标

网友投稿 1062 2022-11-19

Hello Playwright:(7)模拟键盘和鼠标

Hello Playwright:(7)模拟键盘和鼠标

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 分辨率不同而对操作造成干扰。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用Jmeter进行http接口测试的实践
下一篇:Android 探究View onAttachedToWindow 触发时机
相关文章

 发表评论

暂时没有评论,来抢沙发吧~