Как нажать на элемент в древовидном представлении, используя методы объекта страницы 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