Как нажать на элемент в древовидном представлении, используя методы объекта страницы Watir

У меня есть следующий HTML, который представляет древовидную структуру с двумя элементами TREENODE1,TREENODE2:

<div id="foldersPodContent" class="body">
    <ul id="foldersTree" class="list collapsible folders hideRoot" data-component-type="tree" data-tab-index="3" style="position: relative;">
        <li id="node1" class="folders node open selected firefinder-match" tabindex="-1">
        <p class="wrap button draggable">
            <b id="handler1" class="icon"></b>
        </p>
        <ul id="node1sub" class="list collapsible">
            <li id="node2" class="folders node closed" tabindex="-1">
                <p id="anonymous_element_1" class="wrap button draggable">
                <b id="handler2" class="icon"></b>
                TREENODE1
                </p>
            </li>
            <li id="node9" class="folders node closed " tabindex="-1">
                <p class="wrap button draggable">
                <b id="handler9" class="icon"></b>
                TREENODE2                    </p>
            </li>
        </ul>
    </li>
    </ul>
</div>

Этот идентификатор с именем handler2, handler9 представляет знаки плюса в дереве. Моя цель состоит в том, чтобы иметь возможность выбрать один из этих плюсов с помощью гема страницы-объекта Ватира, чтобы заставить дерево отрываться. Следующий код Ruby обеспечивает доступ к тексту двух элементов TREENODE1,TREENODE2: unordered_list(:folders, :id => 'foldersTree')

Это возвращает строку TREENODE1\nTREENODE2, которая может быть легко разделена. Не уверен, как получить элементы "обработчика", чтобы я мог щелкнуть по ним, чтобы развернуть узлы дерева и показать подчиненные. Какие-нибудь мысли?

1 ответ

b элемент вызывает немного проблем, так как в настоящее время есть метод вложенного элемента для b элемент или общий элемент. В качестве обходного пути, я думаю, вам придется уйти в базовый код Watir.

Предполагая, что вы определили дерево папок в вашем объекте страницы:

unordered_list(:folders, :id => 'foldersTree')

Затем вы можете получить определенную папку по ее тексту и значку расширения (т.е. b элемент) с базовым элементом Watir:

folder = page.folders_element.list_item_element(:text => 'TREENODE1')
folder.element.b.click
Другие вопросы по тегам