我有以下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>
此id的名为handler2,handler9表示树中的加号。我的目标是能够使用Watir的页面对象gem选择其中一个加号以使树成为epand。以下Ruby代码提供对两个元素TREENODE1,TREENODE2的文本的访问:
unordered_list(:folders, :id => 'foldersTree')
这将返回一个字符串TREENODE1 \ nTREENODE2,可以轻松拆分。不知道我是如何获得“处理程序”项目所以我可以单击它们来展开树节点并显示下属。有什么想法吗?
答案 0 :(得分:2)
b
元素会导致一些问题,因为b
元素或通用元素当前存在嵌套元素方法。作为一种解决方法,我认为你必须深入了解底层的Watir代码。
假设您已在页面对象中定义了文件夹树:
unordered_list(:folders, :id => 'foldersTree')
然后,您可以通过其文本及其展开图标(即b
元素)获取特定文件夹,其中包含基础Watir元素:
folder = page.folders_element.list_item_element(:text => 'TREENODE1')
folder.element.b.click