我在具有大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存在,则搜索小于500毫秒。但如果UL不存在,则搜索将花费2-5秒。我不明白这一点,因为我希望遍历以相同的方式发生并花费相同的时间。
当我使用selenium时,我也尝试使用By.Id
,但这会产生相同的结果。
答案 0 :(得分:0)
可能是因为代码中的显式等待命令。如果selenium可以在隐式等待中找到元素,那么它将继续下一步但如果它在隐式等待时间内找不到该元素,则会检查显式等待,如果已给出显式等待这个元素Selenium会等到显式等待时间才会抛出异常。