Selenium DOM 搜索顺序

Selenium DOM Search Order

我知道这个问题可能很棘手,需要 help/suggestions。如果 duplicate/bad ,请通过评论告诉我我将删除。

我想了解 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>

我正在搜索元素 id = 某物。

  1. 是否先查找Section 1, h1标签再向下遍历?或者它从 Section 3 j2 标签开始并向上开始?原因是,在一个非常冗长的 AngularJs 页面中,在顶部搜索 table 会得到更快的结果,而在底部搜索 table 几乎需要大约 15 秒。
  2. 其次 - 它是否像连续搜索一样?或垂直?

    连续搜索 Section1, h1, h2, section2, i1

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

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

如果您在 Selenium 中执行 findElement,它将为您提供第一个出现在页面上的元素,其逻辑顺序与 findElement return 如果您在 JavaScript 中执行此操作相同的逻辑顺序。

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

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