SWTBot中的剪贴板访问

时间:2015-02-03 11:44:46

标签: java swt swtbot system-testing

如何在运行SWTBot测试时访问剪贴板?

以下代码抛出无效的线程访问。

Clipboard clipBoard = new Clipboard(SWTUtils.display());
Object object = clipBoard.getContents(TextTransfer.getInstance());

以上代码在UI线程中运行时正常工作。这是唯一的方法吗?

如何在SwtBot线程中访问剪贴板?

1 个答案:

答案 0 :(得分:1)

与SWTBot中的任何其他UI元素访问一样,您需要将剪贴板访问委托给UI线程。

如果SWTBot中已经没有ClipboardBot,您可以自己这样做:

final Object[] object = { null }
display.syncExec( new Runnable() {
  public void run() {
    Clipboard clipBoard = new Clipboard( display );
    object[ 0 ] = clipBoard.getContents( TextTransfer.getInstance() );
    clipboard.dispose();
  }
} );

如果您想使用某些SWTBot基础设施来完成此任务,那么还有一篇文章 how to extend SWTBot