4

我想为 swt 小部件分配一个唯一的 ID,然后在 SWTBot 测试中用这个唯一的 ID 取回小部件。有没有办法做到这一点?

4

2 回答 2

4

在您的 Composite / UI 部分中,您使用默认的 SWT Bot Key 或自定义键设置数据

textOne.setData("org.eclipse.swtbot.widget.key", "textId1");
textTwo.setData("com.sample.my.custom.key", "textCustomId2");

在您的 SWTBot 测试中,您可以获得如下文本

// using the default SWTBot Key
botTextOne = bot.textWithId("textId1")

//using your custom key
botTextTwo = bot.textWithId("com.sample.my.custom.key", "textCustomId2")

参考:

于 2015-05-20T17:26:11.687 回答
3

不幸的是,没有内置的方法可以做到这一点。


我认为你最好的选择是使用方法Widget#setData(Object)来设置id。

您可以使用以下方法生成(伪)随机 id:

UUID id = UUID.randomUUID();
widget.setData(id);

(或使用您想要的任何 id 生成方法)。

要找到您的小部件,您必须使用您想要的任何搜索算法(DFS,BFS,...)搜索Shell(或Composite您可以缩小范围)的子级,然后将 与UUID您的 id进行比较寻找。

for(Control control : shell.getChildren())
{
    UUID id = (UUID) control.getData();

    if(id.equals(WHATEVER_HERE))
    {
        System.out.println(control);
    }
}
于 2013-07-30T11:32:22.983 回答