【问题标题】:Searching a large DOM for an element at the end最后在大型 DOM 中搜索元素
【发布时间】:2017-02-27 23:46:59
【问题描述】:

我在具有大型 DOM(1000 行,约 10,000 个节点)的页面上使用 selenium。我试图确定一个元素是否存在,它几乎位于 DOM 的最后。

结构是这样的:

<html>
    <body>
        <section></section>
        <script></script>
        <span>
            // several more wrappers around the UL
            <ul id="itemsList"></ul>
        </span>
    </body>
</html>

section 节点包含 99% 的行。

我知道 UL 总是在同一个地方。

我使用的 XPath 如下:

//body/span//ul

如果 UL 存在,则搜索时间

由于我使用的是 selenium,我也尝试过使用 By.Id,但这给出了相同的结果。

【问题讨论】:

  • 你的代码中有隐式超时吗?
  • 除了上面的评论,我建议尝试使用 getElementsByXpath(或 List) 并检查该列表的大小。
  • 考虑在硬盘驱动器中搜索从根目录 (C:) 开始的文件。与从 C:\Users\you\Documents\projects\foobar\meetingMinutes\2015\January\ 开始相比,您在 XPath 中指定的 DOM 结构越多,selenium 必须搜索的路径数越少,速度越快该搜索将完成。
  • @MikeJRamsey56 但我指定的是body/span。由于body 中只有一个 span 节点,因此不应该遍历整个 DOM

标签: selenium dom xpath selenium-webdriver


【解决方案1】:

这可能是因为您的代码中有显式等待命令。如果 selenium 可以在 Implicit wait 中找到元素,它会继续下一步但是如果它在隐式等待时间内找不到元素,它会检查 Explicit wait 并且如果你已经给出显式等待这个元素 Selenium 会等到显式等待时间才抛出异常。

【讨论】:

    猜你喜欢
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2020-11-01
    相关资源
    最近更新 更多