如何使用Selenium单击元素后使用xsel提取剪贴板内容

时间:2018-01-20 19:02:21

标签: python python-3.x selenium subprocess clipboarddata

以下代码使用Seleniumxsel,并且在驱动程序从网页复制到剪贴板的某些内容后,预计会提取剪贴板内容:

import unittest
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import subprocess


class Test(unittest.TestCase):
    def run(self):
        self.driver = webdriver.Firefox()
        self.driver.get('some_uri')
        self.wait = WebDriverWait(self.driver, 20)
        link_elem = self.wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "i[data-original-title='Copy to clipboard']")))
        link_elem.click()
        self.wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "i[data-original-title='Copied']")))        
        link = subprocess.check_output(["xsel"])
        print(link)

剪贴板内容被打印,但它不是由python代码复制的内容,而是来自过去的一些剪贴板内容。如何正确提取剪贴板内容?

1 个答案:

答案 0 :(得分:1)

解决方案是使用:

link = subprocess.check_output(["xsel", "--clipboard"]) 

而不是

link = subprocess.check_output(["xsel"])

来自xsel man

  

-b, - clipboard对CLIPBOARD选择进行操作。

默认 xsel 回显 PRIMARY选择,我需要 CLIPBOARD选择。 关于它的更多信息here