《最新出爐》系列入門篇-Python+Playwright自動化測試-44-鼠標操作-上篇

1.簡介

前邊文章中已經講解過鼠標的拖拽操作,今天宏哥在這裏對其的其他操作進行一個詳細地介紹和講解,然後對其中的一些比較常見的、重要的操作單獨拿出來進行詳細的介紹和講解。

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.牛刀小試

我們就利用上邊的官方例子打開在線畫圖:https://draw.yunser.com/,根據官網的示列畫一個正方形給小夥伴或童鞋們進行演示一下。

3.1代碼設計

3.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:

    def mouse_operate():
        # https://draw.yunser.com/
        page.mouse.move(350, 200)
        page.mouse.down()
        page.mouse.move(350, 300)
        page.mouse.move(450, 300)
        page.mouse.move(450, 200)
        page.mouse.move(350, 200)
        page.mouse.up()

    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://draw.yunser.com/")
    page.wait_for_timeout(1000)
    mouse_operate()
    page.wait_for_timeout(1000)
    # page.pause()
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

3.3運行代碼

1.運行代碼,右鍵Run'Test',控制檯輸出,如下圖所示:

2.運行代碼後電腦端的瀏覽器的動作。如下圖所示:

4.click模擬鼠標點擊

鼠標click 點擊是mouse.move()、mouse.down()、mouse.up()的快捷方式。可以簡單的理解爲這三個操作的是一套組合拳。語法如下:

 def click(
        self,
        x: float,
        y: float,
        *,
        delay: typing.Optional[float] = None,
        button: typing.Optional[Literal["left", "middle", "right"]] = None,
        click_count: typing.Optional[int] = None
    ) -> None:
        """Mouse.click

        Shortcut for `mouse.move()`, `mouse.down()`, `mouse.up()`.

        Parameters
        ----------
        x : float
        y : float
        delay : Union[float, None]
            Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
        button : Union["left", "middle", "right", None]
            Defaults to `left`.
        click_count : Union[int, None]
            defaults to 1. See [UIEvent.detail].
        """

4.1參數詳解

參數

類型

釋義

x

float

x橫向座標

y

float

y縱向座標

button

list["left", "middle", "right"]

左中右可選,是點擊元素的位置:"left", "middle", "right", 默認參數是left

click_count

int

點擊次數,默認值爲1,含義參考:https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail

delay

float

按下按鍵和鬆開按鍵之間時間(單位爲毫秒),默認爲0毫秒。

4.2使用方法

mouse.click(x, y)
mouse.click(x, y, **kwargs)

5.dblclick模擬鼠標雙擊

鼠標雙擊是mouse.move()、mouse.down()、mouse.up()、mouse.down()和mouse.up()的快捷方式。

5.1參數詳解

參數

類型

釋義

x

float

x橫向座標

y

float

y縱向座標

button

list["left", "middle", "right"]

左中右可選,是點擊元素的位置:"left", "middle", "right", 默認參數是left

click_count

int

點擊次數,默認值爲1,含義參考:https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail

delay

float

按下按鍵和鬆開按鍵之間時間(單位爲毫秒),默認爲0毫秒。

5.2使用方法

mouse.dbclick(x, y)
mouse.dbclick(x, y, **kwargs)

6.小結

今天主要講解了playwright如何模擬鼠標進行操作的一些方法以及示例基礎知識,也很簡單。好了,今天時間不是很早了,宏哥就講解和分享到這裏,感謝您耐心的閱讀!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章