SWTBot 中的剪贴板访问



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

以下代码引发无效线程访问。

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

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

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

与 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基础设施来完成这个,还有一个关于如何扩展SWTBot。

最新更新