playwright 模拟人输入内容

# utils/playwright_helpers.py
import random
from typing import Tuple, Optional
from playwright.sync_api import Locator, Page

def type_like_human(
        locator: Locator,
        text: str,
        delay_range: Tuple[int, int] = (50, 180),
        mistype_rate: float = 0.0,
        mistype_chars: str = "asdfjkl;",
        clear_first: bool = True,
) -> None:
    """
    在指定 `locator` 上逐字输入 `text`,并随机化按键间隔,模拟真人行为。

    Parameters
    ----------
    locator : playwright.sync_api.Locator
        输入框的 Locator。
    text : str
        要输入的文本。
    delay_range : Tuple[int, int], default=(50, 180)
        每个字符之间等待的随机毫秒范围。
    mistype_rate : float, default=0.0
        输入过程中随机打错一个字符再退格的概率(0~1 之间)。
    mistype_chars : str, default="asdfjkl;"
        可能被误打的字符集合。
    clear_first : bool, default=True
        是否在输入前先清空输入框。
    """
    page: Page = locator.page

    if clear_first:
        locator.fill("")           # Ctrl+A Del

    low, high = delay_range
    if low > high:
        raise ValueError("delay_range 必须满足 (min, max),且 min ≤ max")

    for ch in text:
        locator.type(ch)

        # 可能随机“手抖”一下:
        if mistype_rate and random.random() < mistype_rate:
            wrong = random.choice(mistype_chars)
            locator.type(wrong)
            page.keyboard.press("Backspace")

        pause = random.uniform(low, high)
        page.wait_for_timeout(pause)
page: Page = locator.page的意思
page:类型注解的开始。告诉阅读代码的人和 IDE —— 这个变量叫 page
PagePlaywright 里 页面对象 的类名,位于 playwright.sync_api.Page。写在冒号后面表示:page 变量的类型应当是 Page。”
这对 IDE 自动补全、静态检查(mypy / Pyright)都很有用。
=普通赋值符号。
locator.page取出 Locator 对象所属的页面
在 Playwright 中,每个 Locator 内部都持有对它所依附的 Page 实例的引用,属性名就叫 page
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值