前言
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