1.簡介
鼠標爲我們使用電腦提供了很多方便,我們看到的東西就可以將鼠標移動過去進行點擊就可以打開或者訪問內容,當頁面內容過長時,我們也可以使用鼠標滾輪來實現對整個頁面內容的查看,其實playwright也有鼠標操作的方法。上一篇文章中已經講解過鼠標的部分操作了,今天宏哥在這裏將剩下的其他操作進行一個詳細地介紹和講解。
2.鼠標操作語法
鼠標操作介紹官方API的文檔地址:https://playwright.dev/docs/api/class-mouse
Mouse鼠標操作是基於page對象去調用。常用的鼠標操作有單擊,雙擊,滾輪,按住,移動,釋放。
2.1官方示例
1.使用` page.mouse` 畫 一個100x100的正方形。語法如下:
# Using ‘page.mouse’ to trace a 100x100 square. # 鼠標移動到(0,0)座標 await page.mouse.move(0, 0); # 按下鼠標 await page.mouse.down(); # 鼠標縱座標向下移動100像素 await page.mouse.move(0, 100); # 鼠標橫座標向右移動100像素 await page.mouse.move(100, 100); # 鼠標縱座標向上移動100像素 await page.mouse.move(100, 0); # 鼠標縱座標向左移動100像素 await page.mouse.move(0, 0); # 釋放鼠標 await page.mouse.up();
2.鼠標運行軌跡,如下圖所示:
3.組合拳
mouse.move()、mouse.down()、mouse.up()三個一般都是組合出現在代碼裏的一套組合拳。
3.1down模擬鼠標按下
down模擬鼠標按下,主要是通過調度一個mousedown事件。
3.1.1參數詳解
「參數」
參數 |
類型 |
釋義 |
---|---|---|
button |
list["left", "middle", "right"] |
左中右可選 |
click_count |
int |
默認值爲1,含義參考:https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail |
3.1.2使用方法
mouse.down()
mouse.down(**kwargs)
3.2.move模擬鼠標移動
move模擬鼠標移動,主要是通過調度一個mousemove事件。語法如下:
def move(self, x: float, y: float, *, steps: typing.Optional[int] = None) -> None: """Mouse.move Dispatches a `mousemove` event. Parameters ---------- x : float y : float steps : Union[int, None] Defaults to 1. Sends intermediate `mousemove` events. """
3.2.1參數詳解
參數 |
類型 |
釋義 |
---|---|---|
x |
float |
x座標 |
y |
float |
y座標 |
steps |
3.2.2使用方法
mouse.move(x, y)
mouse.move(x, y, **kwargs)
3.3up模擬鼠標釋放
up模擬鼠標釋放,主要是通過調度一個mouseup事件。
3.2.1參數詳解
參數 |
類型 |
釋義 |
---|---|---|
button |
list["left", "middle", "right"] |
左中右可選 |
click_count |
int |
默認值爲1,含義參考:https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail |
3.2.2使用方法
mouse.up()
mouse.up(**kwargs)
4.wheel模擬鼠標滾動
wheel模擬鼠標滾動,是通過調度一個wheel事件。(滾輪事件如果不處理可能會導致滾動,該方法不會等待滾動結束才返回。)
4.1參數詳解
參數 |
類型 |
釋義 |
---|---|---|
delta_x |
float |
要水平滾動的像素 |
delta_y |
float |
要垂直滾動的像素 |
4.2使用方法
mouse.wheel(delta_x, delta_y)
5.牛刀小試
5.1測試網址
https://cps-check.com/cn/mouse-buttons-test
- 未按鼠標時,不會顯示其他顏色
- 長按鼠標左鍵時,頁面會顯示紅色的左鍵
- 按下鼠標左鍵鬆開時,頁面會顯示粉紅色的左鍵
5.1代碼設計
5.2參考代碼
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行 # 2.註釋:包括記錄創建時間,創建人,項目名稱。 ''' Created on 2023-12-12 @author: 北京-宏哥 公衆號:北京宏哥 Project: 《最新出爐》系列入門篇-Python+Playwright自動化測試-44-鼠標操作-上篇 ''' # 3.導入模塊 from playwright.sync_api import Playwright, sync_playwright, expect def run(playwright: Playwright) -> None: browser = playwright.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() page.goto("https://cps-check.com/cn/mouse-buttons-test") page.wait_for_timeout(1000) #將鼠標移到測試框內 page.mouse.move(650,300) #按下左鍵 page.mouse.down() page.wait_for_timeout(20000) #釋放 page.mouse.up() page.wait_for_timeout(2000) #page.pause() context.close() browser.close() with sync_playwright() as playwright: run(playwright)
5.3運行代碼
1.運行代碼,右鍵Run'Test',控制檯輸出,如下圖所示:
2.運行代碼後電腦端的瀏覽器的動作(圖片中的鼠標左鍵先顯示紅色然後顯示粉色)。如下圖所示:
6.wheel模擬鼠標滾動
wheel模擬鼠標滾動,就是通過調度一個wheel事件。(滾輪事件如果不處理可能會導致滾動,該方法不會等待滾動結束才返回。)
6.1參數詳解
參數 |
類型 |
釋義 |
---|---|---|
delta_x |
float |
要水平滾動的像素 |
delta_y |
float |
要垂直滾動的像素 |
6.2使用方法
mouse.wheel(delta_x, delta_y)
7.小結
到此,鼠標的一些常用的操作基本上都已經講解和分享完成,當然了可能還有其他操作,這個等我遇到的時候,再具體問題具體分析。好了,今天時間也不早了,宏哥就講解和分享到這裏,感謝您耐心的閱讀,希望對您有所幫助。