【问题标题】:Selenium DOM Search OrderSelenium DOM 搜索顺序
【发布时间】:2016-06-04 04:22:20
【问题描述】:

我知道这个问题可能很棘手,需要帮助/建议。如果重复/坏,请通过 cmets 知道我将删除。

我想了解 Selenium 如何在 DOM 的树结构中进行搜索。

(我问的原因是我刚刚从Testcomplete切换。Testcomplete从下往上搜索。最底部的元素搜索得更快。另外,如果有10个元素具有相同的id,我们尝试findelement和不是findallelements,它会给出最底部的元素)

所以 Selenium - 它是从树枝的顶部还是底部开始的?让我们看看树如下

<div>  
    <section1>
        <h1>
        </h1>
        <h2>
        </h2>
   </section1>
    <section2>
        <i1>
        </i1>
   </section2>
   <section3>
        <j1>
            <k1 id='something'>
            </k1>
        </j1>
        <j2>
        </j2>
   </section3>
</div>

我正在搜索 Element id = something。

  1. 它会先寻找Section 1, h1标签然后向下遍历吗?还是从Section 3 j2 标签开始向上开始?原因是,在一个非常长的 AngularJs 页面中,搜索顶部的表格会提供更快的结果,而底部的表格几乎需要 15 秒左右。
  2. 第二 - 它是否像串行搜索一样?或垂直?

    串行 - 搜索 Section1, h1, h2, section2, i1 等。

    垂直 - 搜索 Section1, section2, section3,然后搜索 h1,h2,i1 等。

了解这一点对于建立良好的元素定位器策略大有帮助。

【问题讨论】:

  • 这个问题的答案将非常类似stackoverflow.com/a/34645549/3124333
  • 嗯,不错。我会收集这些。将尝试跨多个页面进行测试。
  • 你能看看我关于詹金斯设置的问题之一吗???

标签: angularjs selenium-webdriver automated-tests testcomplete


【解决方案1】:

如果您在 Selenium 中执行 findElement,它将为您提供首先出现在页面上的元素,其逻辑顺序与您在 JavaScript 中执行 findElement 时返回的逻辑顺序相同。

显然,有多种方法可以进行查找,具体的实现将取决于驱动程序的实现(FireFox、Google、IE 等)但我总是得到我所期望的,而不是像古怪的东西TC。

我的回答是基于我自己对产品的体验。我找不到任何可以为您记录这一点的确切权威来源。

【讨论】:

  • 我不会说 TC 很古怪。只是Javascript实现和TC会按照一定的顺序列出来。顺便说一句,他们正在使用 JScript - microsoft javascript 实现。其次,如果您回答标签的遍历顺序,我无法理解。我发现它非常重要,因为如果有一些垂直搜索,我们可以使用 xpath 更快地缩小范围。不过我正在尝试
  • 我的经验是它是按照 HTML 列表的顺序排列的。深度优先搜索。 XPath,如果你能做到的话,可能会快几毫秒。除了明确指定您要查找的元素之外,我不会担心。
  • 让我来验证一下。我可能需要为此创建一个自定义 Html
  • 任何提示建议 - Selenium 用于搜索的确切 javascript 命令是什么?
  • 就像我说的,这将取决于驱动程序的实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多