Как использовать метод org.eclipse.swtbot.swt.finder.widgets.SWTBotTree.getNode (String nodeText, int index)? - PullRequest
0 голосов
/ 03 января 2019

Я использую этот метод в своей структуре, и он начал давать мне исключение, например "org.eclipse.swtbot.swt.finder.exceptions.AssertionFailedException: сбой утверждения: индекс (1) был больше, чем количество узлов (1 ) в дереве. "

Ниже приводится структура:

<RootNode>
    <ChildNode1>
        <GrandChildNode1/>
    </ChildNode1>
    <ChildNode2/>
</RootNode>

Ниже приведен код. Если я печатаю узел с индексом 2 в методе «isTreeNodeWithIndexPresent», он выдает правильный «ChildNode2». Выдается только исключение, когда проходит через метод getNode.

public boolean isTreeNodeWithIndexPresent(final String node, final int nodeIndex) {
    boolean status = false;
    if (node.length() > 0) {
        final SWTBotTreeItem[] botTreeItem = tree.getAllItems();
        for (final SWTBotTreeItem swtBotTreeItem : botTreeItem) {
            status = swtBotTreeItem.getNode(node, nodeIndex).isVisible();
        }
    }
    return status;
}.

    public SWTBotTreeItem getNode(final String nodeText, final int index) {
            List<SWTBotTreeItem> nodes = getNodes(nodeText);
            Assert.isTrue(index < nodes.size(),
                    MessageFormat.format("The index ({0}) was more than the number of nodes ({1}) in the tree.", index, nodes.size()));
            return nodes.get(index);
        }

1 Ответ

0 голосов
/ 02 мая 2019

SWTBotTreeItem#getNode(nodeText, index) возвращает узел с заданным текстом, который является прямым дочерним элементом элемента, к которому вызывается метод.

Индекс может использоваться в случае, если элемент дерева имеетнесколько узлов с одинаковым именем.Например, если у вас двое детей с именем «foobar», вы можете получить доступ ко второму узлу с помощью item.getNode("foobar", 1) (а первый - с item.getNode("foobar", 0) или item.getNode("foobar")).

...