为什么现在的执行时间?可见的两倍长?在ruby / watir?

时间:2015-06-03 18:00:41

标签: ruby watir-webdriver

阅读了几个网页,其中包括Testing by Justin Ko,其中包含

  • 存在? - 返回此元素是否实际存在。
  • 本? - 如果元素存在且在页面上可见,则返回true
  • 可见? - 如果任何父元素不可见,那么我们就不能写入元素。确定这一点的唯一可靠方法是迭代DOM元素树,检查每个元素以确保它是可见的。

从那

  1. 我会预测存在吗?将是最快的,因为它只检查元素是否存在。
  2. 那个礼物?这将是第二快,因为它检查存在和可见性。
  3. 那可见吗?会是最慢的,因为(正如我读到的那样)它也必须迭代DOM元素树。
  4. 简单地检查一个元素听起来像恒定时间,而迭代听起来像线性时间。

    我碰巧正在进行一些时间测试,并认为定时上述方法也很有意思。我的一个预测是错误的。

    存在?是最快的;进入比可见的稍快? 但是,现在?是可见的两倍慢?

    我尝试以不同的顺序调用这些方法,并将它们封装在1.upto(10)循环中以平均时间。相同的结果。

    这里发生的事情我不明白,我想了解。谁知道为什么在场?大概是可见的两倍?或者至少有一个假设?

1 个答案:

答案 0 :(得分:1)

现在有意义吗?是最慢的,因为它检查存在 AND 是否可见。

https://github.com/watir/watir-webdriver/blob/6212504320559a90966052506c5e9e26b7d16533/lib/watir-webdriver/elements/element.rb#L406

def present?
  exists? && visible?
end

只要存在它就会有意义吗?可见吗?组合