使用剪贴板与pyvirtualdisplay

时间:2015-08-22 16:45:08

标签: python clipboard pyvirtualdisplay

我有一个在pyvirtualdisplay中运行的脚本,我需要一个复制到剪贴板的变量值。

以下有效(我的脚本的简化版):

from selenium import webdriver
import clipboard

driver = webdriver.Chrome("/home/name/chromedriver")
driver.get("http://pagewithvariable.com")
variable = find_element_by_name("variable")

clipboard.copy(variable)

以下无效

from selenium import webdriver
import clipboard
from pyvirtualdisplay import Display

display = Display(visible=0, size=(800, 600))
display.start()

driver = webdriver.Chrome("/home/name/chromedriver")
driver.get("http://pagewithvariable.com")
variable = find_element_by_name("variable")

clipboard.copy(variable)

我在pyvirtualdisplay中尝试运行剪贴板时遇到的错误如下:

XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":1195"
  after 11 requests (8 known processed) with 0 events remaining.

请帮助:)

1 个答案:

答案 0 :(得分:1)

好的,事实证明pyvirtualdisplay的剪贴板是完全独立的,没有迹象表明在虚拟显示器中使用你的操作系统的可能性。

由于剪贴板在大多数情况下会在脚本退出时使用,因此在关闭显示时它会起作用。我曾经以下面的方式做到这一点,这不起作用:

display.popen.terminate()

当使用以下内容关闭显示时,在该点之后声明的剪贴板正在正常工作:

display.stop()

我的问题是谷歌就此主题提出的唯一问题,因此我认为其他人可能会发现它很有用。