【问题标题】:Python 3 Selenium | Clipboard not working on headless chromedriver on WindowsPython 3 硒 |剪贴板不适用于 Windows 上的无头 chromedriver
【发布时间】:2019-04-04 11:11:09
【问题描述】:

在 StackOverflow 中,已经有一个 similar post 关于这个话题。虽然帖子的 OP 回答说“这是 Windows 中的一个错误”并且“我没有找到解决方案,我只是删除了部分代码” .

我的情况略有不同。我无法删除部分代码,但我可以使用不同的网络浏览器。

我的情况:

我需要将特定文本写入文本框。不幸的是,我正在编写的文本中包含很少的 emojis 实例,因此 send_keys() 不是一个选项。相反,在 StackOverflow 的帮助下,我最终使用了 pyperclip.copy(text)element.send_keys(Keys.CONTROL,'v'),它们运行良好(它成功复制了表情符号)。

但我还需要 ChromeDriver 为 --headless。一切都很好,除了复制粘贴部分。

我的问题

我的问题是:我应该如何解决这个问题?

  • 必须隐藏 Web 浏览器(例如 ChromeDriver 中的 --headless
  • 它可以将emojis写入文本元素
  • 必须在 Windows 操作系统(Windows 7 - 10)上工作

【问题讨论】:

  • 剪贴板是窗口管理器提供的服务/守护进程,不是 Chrome 的功能。因此,如果您正在无头运行,则可能没有可用的系统剪贴板。
  • @HåkenLid 嗯,您知道我的问题的任何替代解决方案吗? (将表情符号写入文本框元素,同时将网络浏览器“隐藏”)?
  • 是否可以选择使用不同的浏览器驱动程序?我认为Firefox selenium 驱动程序应该支持send_keys 中BMP 以外的字符。
  • @HåkenLid 这是一个选项。那我试试看。
  • @HåkenLid 好的,经过进一步测试,我可以确认 firefox selenium 驱动程序确实支持 emoji send_keys。但是,我仍然无法确认它是否可以在无头模式下工作,主要是,我的代码遇到了多个问题(因为它是用 ChromeDriver 编码的。所以我仍然愿意接受其他建议。

标签: python selenium clipboard emoji headless-browser


【解决方案1】:

我遇到了同样的问题,所以我使用了 klembord 而不是 pyperclip。

https://pypi.org/project/klembord/

# pip install webdriver-manager
# pip install klembord
# pip install selenium
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from webdriver_manager.firefox import GeckoDriverManager
import klembord
klembord.init()
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options,executable_path=GeckoDriverManager().install())
print("Headless Firefox Initialized. Wait for output")
driver.get("https://www.lipsum.com")
l = driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div[3]/div[1]/p")
klembord.set_text(l.text) # setting text to clipboard
print("Check clipboard by pressing WIN + V or CTRL +V")
driver.quit()

【讨论】:

  • 我尝试过使用 Klembord,但我遇到了主帖中描述的相同问题,
  • 嗨@Vikram,我已经完成了Klembord页面中解释的内容:>>> import klembord >>> klembord.init() >>> klembord.get_text() ...... ......当我这样做时,粘贴我的计算机剪贴板内容,而不是无头浏览器中的“复制”命令内容。
  • 您要复制的文本的来源是什么?是直接来自html标签还是任何python变量?
  • @sunny9495 你能发布你的错误或任何有助于解决它的东西吗?
猜你喜欢
  • 2011-11-02
  • 2023-03-12
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2017-02-11
  • 1970-01-01
相关资源
最近更新 更多