簡體   English   中英

如何從剪貼板中獲取復制的內容 - Selenium 無頭模式

[英]How to fetch copied content from a clipboard - Selenium headless mode

我有一個帶有“復制鏈接”按鈕的網頁,單擊它會從文本框中復制一些數據。 此外,這些 selenium 測試將在 Linux 機器上運行(無頭模式)。 我使用了 awt Toolkit api,但由於它在 Linux 無頭模式下運行,因此失敗並顯示以下堆棧跟蹤。 在 Linux 模式下似乎不支持 Toolkit

Test Failed: {}[class: tests.AMUSanityTests, method: test, exception: java.awt.HeadlessException, message: 'No X11 DISPLAY variable was set, but this program performed an operation which requires it.', stack trace: 
sun.awt.HeadlessToolkit.getSystemClipboard(HeadlessToolkit.java:309)

我也嘗試使用 selenium sendKeys 但這是一個無效方法,因此我無法獲取內容。 網頁上沒有地方讓我粘貼內容並再次復制以進行驗證。

我需要一種方法來提取復制的內容以進行驗證。

有人有關於如何實現這一目標的解決方案嗎?

謝謝你。

我寫了一個小類,以某種方式做到這一點:

public class ClipboardUtil {

    public static String fetchClipboardContents() throws IOException {
        String contents = "";
        String command = "xclip --clipboard -o";
        Process process = Runtime.getRuntime().exec(command);
        try (BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
            contents = br.readLine();
        }
        return contents;
    }

}

靜態方法執行 linux 命令xclip --clipboard -o ,它將剪貼板的內容輸出到終端。 Java 獲取輸出並將其作為字符串返回。

您可以在 linux 中執行一些其他命令來獲得所需的輸出,並且 java 代碼應該保持不變。

信息:

我使用 Ubuntu 來編寫這段代碼。 示例命令返回復制的內容或當前選擇的內容。 使用不同的 linux 命令是個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM