【问题标题】:java.awt.HeadlessException after calling sun.awt.HeadlessToolkit.getSystemClipboard()调用 sun.awt.HeadlessToolkit.getSystemClipboard() 后的 java.awt.HeadlessException
【发布时间】:2017-01-23 08:51:08
【问题描述】:

我想从本地目录导入一个文件。所以我正在做所有这些步骤。

public static void sendFile(WebDriver webdriver, String text) 
{

    StringSelection stringSelection = new StringSelection(text);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
    webdriver.switchTo().activeElement();
    waitFor.waitTimeOut(5 * 1000);

    Robot robot = null;

    try {
        robot = new Robot();
    } 
    catch (AWTException e)
   {

        throw new RuntimeException(e);
    }
    log.debug("Entering: " + text);
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    waitFor.waitTimeOut(5 * 1000);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);

}

我这样调用这个方法:

String text = "C:/text.xml"
sendFile(new FirefoxDriver(),text);

但它在调用getSystemClipboard(Unknown Source) 时让我感到java.awt.HeadlessException。但是文件的位置是正确的。那么有人知道这个问题的任何解决方案吗?

【问题讨论】:

    标签: selenium selenium-webdriver robotframework awtrobot


    【解决方案1】:

    浏览文档

    http://www.oracle.com/technetwork/articles/javase/headless-136834.html

    当代码依赖于显示器时会引发 HeadlessException 设备、键盘或鼠标在不支持的环境中调用 支持任何这些

    如果您打算运行 在无头环境和传统环境中使用相同的应用程序:

    java -Djava.awt.headless=true

    【讨论】:

    • 我检查了 isHeadless() 方法的值,默认值为 true。我也再次设置 System.setProperty("java.awt.headless", "true"); 但我得到了同样的异常。
    【解决方案2】:

    将无头标志转为false 对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-16
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      相关资源
      最近更新 更多