Hello Playwright:(7)模擬鍵盤和鼠標

盡管在上一節中,我們已經能夠通過FillAsyncClickAsync來實現輸入和點擊元素。但是,還有其他場景,我們必須模擬用戶使用鍵盤、鼠標與頁面交互。例如在線文檔:

a959c9dc0a72af6bf2ecaca84d241175.png

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");

6182555720e8a61cc870a0ed8c430a5b.gif

這里使用了 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?});

3d4b619b7e1ca9919d8536f4841824c3.gif

在這里我們使用了一個小技巧,不需要猜測"更多"鏈接所處的位置。Locator提供了一個叫做BoundingBoxAsync的方法,它返回元素的位置(X 和 Y)和大小(寬度和高度)。

通過元素所在位置和大小,我們可以精確控制鼠標位置,而無需擔心 UI 分辨率不同而對操作造成干擾。

添加微信號【MyIO666】,邀你加入技術交流群

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285808.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285808.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285808.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

精通Hibernate:通過Hibernate操縱對象

http://developer.51cto.com/art/201202/315954.htm轉載于:https://www.cnblogs.com/iOS-mt/p/5973683.html

【ArcGIS遇上Python】Python批量將多個文件夾下的多個影像數據鑲嵌至新柵格

ArcGIS雖然可以實現一次多個影像同時參與,拼接成一個整的影像,但是通常情況下,多個影像并不在同一個文件夾下,這樣拼接的時候需要逐個手動進行添加,如果數據量大的話,跟不就不可取,針對這一問題,本文采用Python,實現將多個文件夾下的多個影像拼接,高效快速。 我們以…

2019全球開發者調查:僅2%的人996,Python并不是最受喜愛的語言

導讀&#xff1a;開發者社區正在發生哪些變化&#xff1f;Stack Overflow 的最新調查獲得了一些預料之外的結果&#xff1a;Java 語言開發者的平均收入不到 35 萬元人民幣&#xff0c;成為了收入最低的群體&#xff1b;另一方面&#xff0c;人工智能領域流行的 Python 并不是最…

Java 編寫程序 創建一個游戲【5、6兩章的內容】【第5章】

每次使用單邊大腦的時間不要太久&#xff0c; 連續使用左邊腦30 分鐘如同使用左臂 30 分鐘一樣&#xff0c; 周期性性地交換讓大腦兩側輪流休息。 左腦活動包括了循序漸進的工作&#xff0c;解決邏輯問題與分析&#xff1b; 右腦的活動包括了陰雨、創造性思考、模式匹配與可視化…

一般地

2019獨角獸企業重金招聘Python工程師標準>>> 1.EO的Updatable屬性默認為Always&#xff0c;基于EO創建的VO也是。而基于SQL創建VO的Updatable屬性默認為Never&#xff0c;如果要修改&#xff08;例如將VO拖至頁面生成Form用于新增&#xff09;&#xff0c;則需將該屬…

【CASS精品教程】南方CASS內業基本作圖--野外測記草圖法繪制常見地物教程

文章目錄 一、系統環境:1.1 操作系統1.2 應用環境二、實例數據:2.1 野外測點CASS坐標格式數據2.2 野外測記草圖三、地物繪制前準備操作3.1 定顯示區3.2 展野外測點點號:3.3 繪圖測點定位模式的選擇四、野外測記草圖繪制常見基本地物4.1繪制交通設施4.2繪制居民地4.3 繪制地貌…

最新!2019 年中國程序員薪資生存調查報告出爐

此調查&#xff0c;是對北京、上海、廣東和浙江等全國 29 個省、直轄市及特別行政區的 26W 優秀程序員進行了一次詳細的調查&#xff0c;形成本報告。 根據中國互聯網絡信息中心&#xff08;CNNIC&#xff09;近日發布第 43 次《中國互聯網絡發展狀況統計報告》。截至 2018 年 …

快速掌握 ASP.NET 身份認證框架 Identity - 登錄與登出

推薦關注「碼俠江湖」加星標&#xff0c;時刻不忘江湖事這是 ASP.NET Core Identity 系列的第三篇文章&#xff0c;上一篇文章講解了如何在 ASP.NET Core Identity 中實現用戶注冊。那么&#xff0c;這篇文章講一講如何在 ASP.NET Core Identity 中實現用戶的登錄與登出。點擊上…

C語言試題七十九之請編寫函數實現自然底數 e=2.718281828

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫函數…

PHP和Mysql處理IP地址

PHP: 32位整型&#xff08;bigint&#xff09; ip2long (IP —> long) long2ip (long —> ip) Mysql: 10位無符號整型(INT UNSIGNED) INET_ATON (IP —> long) INET_NTOA (long —> ip) 轉載于:https://www.cnblogs.com/yudis/articles/5976362.html

如何創建NFT并OpenSea上展示《alchemy How to Develop an NFT Smart Contract》譯

翻譯&#xff1a;1_bit 原文&#xff1a;https://docs.alchemy.com/docs/how-to-develop-an-nft-smart-contract-erc721-with-alchemy 注&#xff1a;英文不好各位多多擔待 1.如何使用 Alchemy 開發一個 NFT 智能合約 在你第一次使用 solidity 時開發一個智能合約部署在區塊…

Jmeter之Bean shell使用(二)

上一篇Jmeter之Bean shell使用(一)簡單介紹了下Jmeter中的Bean shell&#xff0c;本文是對上文的一個補充&#xff0c;主要總結下常用的幾種場景和方法&#xff0c;相信這些基本可以涵蓋大部分的需求。本節內容如下&#xff1a; 一、操作變量 二、操作屬性 三、自定義函數 四、…

【ArcGIS風暴】ArcGIS中國地表覆蓋數據GlobeLand30預處理(批量投影、拼接、掩膜提取)附成品下載

結果示意圖&#xff1a; GlobeLand30是30米空間分辨率全球地表覆蓋數據&#xff0c;目前可供下載的有3年的數據&#xff1a;2000-2010-2020。本文主要講解在ArcGIS10.6平臺下進行GlobeLand30的預處理操作&#xff0c;主要預處理步驟包括&#xff1a;批量分幅投影轉換、批量分幅…

Asp.Net MVC4入門指南(9):查詢詳細信息和刪除記錄

在本教程中&#xff0c;您將查看自動生成的Details和Delete方法。 查詢詳細信息和刪除記錄 打開Movie控制器并查看Details方法。 ?Code First 使得您可以輕松的使用Find方法來搜索數據。一個重要的安全功能內置到了方法中。方法首先驗證Find方法已經找到了一部電影&#xff0c…

漫畫:什么是架構師?

于是&#xff0c;小灰去向大黃請教 這是有關未來的故事&#xff1a; 從前&#xff0c;有一個趕路的人路過一片工地&#xff0c;看到三個年輕人在工地上搬磚。 于是&#xff0c;他問其中一個人&#xff1a; 于是&#xff0c;他又問了第二個人&#xff1a; 于是&#xff0c;他又問…

Andoroid之BottomNavigationView右上角添加紅點布局和自動跳轉到底部具體第幾個Tab

一、需求 BottomNavigationView右上角添加紅點布局和自動跳轉到底部具體第幾個Tab 我們知道BottomNavigationView是在google material里面的組件 github地址如下: https://github.com/material-components/material-components-android 二、效果圖片爆照 三、BottomNaviga…

FileSystemWatcher監聽文件是否有被修改

作用&#xff1a;監聽文件系統更改通知&#xff0c;并在目錄或目錄中的文件更改時引發事件。 需求&#xff1a;監聽特定文件是否修改&#xff0c;然后做出相應的操作。 方法&#xff1a; ①利用一個線程&#xff0c;一直去查找該指定的文件是否有被修改&#xff0c;如果修改則操…

一、FFmpeg 的初嘗試《FFmpeg 音視頻開發基礎入門到實戰》

學習目標 了解 FFmpeg學習 FFmpeg 工具的下載及環境配置了解 FFmpeg 工具的使用方式了解 FFmpeg play 的使用方法了解 FFmpeg paly 的音量設置、窗口設置、音量設置等設置方法 一、了解 FFmpeg FFmpeg 是一個音視頻處理的工具&#xff0c;通過 FFmpeg 可以對視頻進行旋轉、縮…

快速掌握 ASP.NET 身份認證框架 Identity - 用戶注冊

推薦關注「碼俠江湖」加星標&#xff0c;時刻不忘江湖事這是 ASP.NET Core Identity 系列的第二篇文章&#xff0c;上一篇文章介紹了 Identity 框架的集成&#xff0c;以及一些基礎知識。這篇文章講一講如何在 ASP.NET Core Identity 中實現用戶注冊。點擊上方或后方藍字&#…

Android命令Monkey壓力測試,詳解

支持原創&#xff0c;前半部分來源博客原文&#xff1a;http://blog.csdn.net/huangbiao86/article/details/8490743shell, monkey, system, Android, 文件系統Monkey, 示例, 簡介一、Monkey測試簡介Monkey測試是Android平臺自動化測試的一種手段&#xff0c;通過Monkey程序模擬…