You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python从Selenium Grid获取浏览器剪贴板内容?

获取Selenium Grid中浏览器剪贴板内容的正确方法

你用tkinter获取的是本地主机剪贴板,和Grid节点上的浏览器剪贴板完全无关,下面是几种可行的实现方案:

方案1:通过JavaScript读取(现代浏览器首选)

利用浏览器原生的navigator.clipboardAPI直接读取,前提是页面为HTTPS(localhost可例外)且浏览器未限制剪贴板权限:

# 执行JS代码获取剪贴板文本
clipboard_content = driver.execute_script("return navigator.clipboard.readText();")
print(clipboard_content)

如果遇到权限弹窗,可以提前通过浏览器参数自动授权,比如Chrome:

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 自动允许剪贴板权限
chrome_options.add_argument("--enable-clipboard-read")
# 启动driver时传入options
driver = webdriver.Remote(command_executor="http://grid-url:4444/wd/hub", options=chrome_options)

方案2:模拟粘贴到临时输入框(兼容性拉满)

如果JS方法受限于权限或浏览器版本,可通过创建临时输入框、模拟粘贴后读取内容:

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

# 插入隐藏的临时输入框并聚焦
driver.execute_script("""
    const tempInput = document.createElement('input');
    tempInput.style.cssText = 'position:fixed;opacity:0;';
    document.body.appendChild(tempInput);
    tempInput.focus();
""")
# 模拟Ctrl+V粘贴操作
temp_input = driver.find_element(By.TAG_NAME, 'input')
temp_input.send_keys(Keys.CONTROL, 'v')
# 读取粘贴的内容
clipboard_content = temp_input.get_attribute('value')
# 清理临时元素
driver.execute_script("document.querySelector('input').remove();")
print(clipboard_content)

方案3:Selenium 4+原生剪贴板API(简洁版)

Selenium 4及以上版本提供了直接操作剪贴板的API,需确保Grid节点的浏览器驱动与Selenium版本匹配:

# 直接读取剪贴板文本
clipboard_content = driver.get_clipboard_text()
print(clipboard_content)

部分浏览器可能需要启用实验性选项,比如Chrome需添加--enable-experimental-web-platform-features参数。

内容的提问来源于stack exchange,提问作者NicoCaldo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 23:40:01