前言

playwright 可以模拟键盘操作,定位到元素使用press()方法

press()方法 介绍

locator.press ()方法聚焦所选元素并产生单个击键。它接受在键盘事件的keyboardEvent.key属性中发出的逻辑键名称:

Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape,
ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight,
ArrowUp, F1 - F12, Digit0 - Digit9, KeyA - KeyZ, etc.

使用示例

# 敲 Enter 键
page.get_by_text("Submit").press("Enter")

# 按住 Control+右箭头→
page.get_by_role("textbox").press("Control+ArrowRight")

# 按键盘上的 $ 符号
page.get_by_role("textbox").press("$")

您也可以指定要生成的单个字符,例如"a"or "#"。
还支持以下修改快捷方式:Shift, Control, Alt, Meta.
简单版本产生单个字符。这个字符是区分大小写的,所以"a"和"A"会产生不同的结果。

# <input id=name>
page.locator('#name').press('Shift+A')

# <input id=name>
page.locator('#name').press('Shift+ArrowLeft')

也支持"Control+o"或"Control+Shift+T" 等快捷方式,当使用修饰符指定时,修饰符被按下并在按下后续键时按住。

请注意,您仍然需要指定大写字母A以Shift-A生成大写字符。Shift-a产生一个小写的,就好像你有CapsLock切换。

使用实例

如下网页中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <input id="demoInput" value="上海-悠悠">
        <button id="btn">点我复制</button>
    </div>
    <div>
        <input id="copy" value="">
    </div>

</body>
<script>
    const btn = document.querySelector('#btn');
    btn.addEventListener('click', () => {
        const input = document.querySelector('#demoInput');
        input.select();
        if (document.execCommand('copy')) {
            document.execCommand('copy');
            console.log('复制成功');
        }
    })

</script>
</html>

点按钮复制到粘贴板

使用快捷键"Control+V" 粘贴到页面其它发位置

from playwright.sync_api import sync_playwright
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("file:///C:/Users/dell/Desktop/demo.html")

    # 点击按钮后复制到粘贴板
    page.locator('#btn').click()

    # Ctrl + v 粘贴到另外一个地方
    page.locator('#copy').press('Control+V')

    page.pause()
    browser.close()

复制到本地

如果需要把粘贴板的内容复制到本地文件,需用到python的第三方库保存到本地

pip install pyperclip

使用示例

import pyperclip


x = "上海-悠悠"

# 复制到剪切板
pyperclip.copy(x)

# 获取剪切板的内容
y = pyperclip.paste()
print(f"粘贴的内容: {y}")

获取playwright 复制到剪切板内容

playwright 结合 pyperclip 使用

from playwright.sync_api import sync_playwright
import pyperclip
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("file:///C:/Users/dell/Desktop/demo.html")

    # 点击按钮后复制到粘贴板
    page.locator('#btn').click()

    # 获取剪切板的内容
    y = pyperclip.paste()
    print(f"粘贴的内容: {y}")


    # # Ctrl + v 粘贴到另外一个地方
    # page.locator('#copy').press('Control+V')
    browser.close()

文章转自:https://www.cnblogs.com/yoyoketang/p/17328683.html