【问题标题】:How to click on item in tree view using Watir page-object methods如何使用 Watir 页面对象方法单击树视图中的项目
【发布时间】:2014-03-13 21:21:24
【问题描述】:

我有以下 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 选择其中一个加号来使树展开。以下 Ruby 代码提供对 TREENODE1、TREENODE2 两个元素的文本的访问: unordered_list(:folders, :id =&gt; 'foldersTree')

这将返回一个字符串 TREENODE1\nTREENODE2,它可以很容易地被拆分。不知道如何获得“处理程序”项目,因此我可以单击它们以展开树节点并显示下属。有什么想法吗?

【问题讨论】:

    标签: watir watir-webdriver page-object-gem


    【解决方案1】:

    b 元素会引起一些问题,因为当前存在用于 b 元素或通用元素的嵌套元素方法。作为一种解决方法,我认为您将不得不进入底层的 Watir 代码。

    假设您已经在页面对象中定义了文件夹树:

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

    然后你可以通过它的文本和它的展开图标(即b元素)和底层的Watir元素来获得一个特定的文件夹:

    folder = page.folders_element.list_item_element(:text => 'TREENODE1')
    folder.element.b.click
    

    【讨论】:

    • 谢谢。这为我节省了很多时间,因为我不确定我会尝试多少种替代方案……如果有的话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2016-09-05
    相关资源
    最近更新 更多