【问题标题】:Robot & Selenium Tree Element Expansion机器人和硒树元素扩展
【发布时间】:2016-02-11 15:42:06
【问题描述】:

我的主管最近将我们从 HP-UFT 切换到使用 Selenium Webdriver 的 Robot,我发现很难弄清楚如何使用驱动程序和/或关键字框架来扩展折叠树 ul/li webelement。

以下是页面上代码的剥离示例:

<ul>
<li class="node-class open" id="i1454430045821320">
    <a class="" style="" href="">
    <ins>&nbsp;</ins>Location Header 1</a>
    <ul>
        <li class="node-instance  leaf" id="i1454430058247421">
            <a class="" style="" href="">
            <ins>&nbsp;</ins>Location 1</a>
        </li>
        <li class="node-instance  last leaf" id="i14545337159411690">
            <a class="" style="" href="">
            <ins>&nbsp;</ins>Location 2</a>
        </li>
    </ul>
</li>
<li class="node-class  closed " id="i14544407827351156">
    <a class="" style="" href="">
    <ins>&nbsp;</ins>Location Header 2</a>
</li>

我正在尝试做的应该非常简单:如果它被归类为封闭,我想扩展一个指定的封闭树结构。每个分支下方是一个可选的嵌套分支,或一个选择复选框。我的最终目标是能够深入到测试人员指定的树中的某个位置,然后单击末端叶子。

使用“Click Element|xpath=/ul/li[a[contains(text(),'Location Header 2')]”确实会展开分支,但它也会选中所有子节点复选框。

在 UFT 中,如果我遇到此类问题,我只需更改父类 &lt;li&gt; 以强制将其打开(如果我无法单击或使用任何其他方法向下钻取和选择)。

在 Robot 中,我可以使用关键字“获取元素属性”来读取类,但我没有看到更改它的关键字,所以这个想法已经过时了。我正在寻找的是一种在不无意中选择所有子节点的情况下扩展树枝的方法。

一旦我弄清楚如何正确打开节点但打开分支而不可能选择所有子项,我就可以处理向下钻取的树部分,这让我把头撞到我的桌子上。

我一直在想,也许我错过了一些简单的东西。任何我可以尝试的事情的帮助将不胜感激。

【问题讨论】:

  • 您能告诉我们您当前的代码吗?我不太熟悉你想做的事情,但你的定位器不会是最可靠的,我假设当你手动执行此操作时,所有子项目都没有被选中?
  • "Click Element xpath=/ul/li[a[contains(text(),'Location Header 2')]" 这是我用来选择第二个标题分支的关键字和参数.但是,当我这样做时,它会扩展嵌套的 li 元素......并选择所有子项。我认为的问题是特定元素的默认行为是,如果您单击它,则会选择所有子项。手动避免这种情况的唯一方法是单击标题左侧的展开/收缩“箭头”......但这不是我可以在 Robot 中与之交互的元素,因为它实际上不在可视代码中。
  • 好的,所以目前它遵循很酷的默认行为。所以标题左侧有一个箭头,我假设这是javascript?如果是这样,这不是问题,您可以使用 jquery 来定位一个元素
  • 你试过点击 元素吗?看起来它可能是您的“向左扩展/收缩”箭头“的占位符”。试试Click Element xpath=//ul/li[a[contains(text(),'Location Header 2')]/a/ins
  • Jim:我刚刚尝试了额外的 /a/ins 对象,它继续执行相同的行为。单击它会选择所有子项。呃。

标签: selenium robotframework


【解决方案1】:

想通了!非常感谢大家的想法。

Click Element At Coordinates | xpath=//ul/li[a[contains(text(),'Location Header 2')] | -100 | 0

幸运的是,页面上的所有 ul 元素列都具有相同的 css 样式,将它们设置为 200px 宽度。我通过反复试验发现“在坐标”选项从对象的中心单击(而不是我最初认为的左上角)。我想我会分享这个,以防其他人遇到类似问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 2019-03-06
    • 2017-05-07
    • 1970-01-01
    • 2019-09-09
    • 2016-11-02
    • 2018-01-29
    相关资源
    最近更新 更多