一尘不染

在量角器中,browser.isElementPresent与element.isPresent与element.isElementPresent

selenium

在量角器中,基本上有3种方法可以检查元素是否存在:

var elm = element(by.id("myid"));

browser.isElementPresent(elm);
elm.isPresent();
elm.isElementPresent();

这些选项是否等效且可互换,通常应首选哪一种?


阅读 252

收藏
2020-06-26

共1个答案

一尘不染

所有功能都以相似的方式存在细微的差异。这是我发现的一些差异-

elm.isPresent()
--

  1. 是的扩展,ElementFinder因此在执行任何操作之前等待Angular解决。
  2. 它在elmis和element(locator)or ElementFindernot 时起作用ElementArrayFinder。如果使用locator指定的元素返回了多个元素,则检查第一个元素是否isEnabled()在DOM中。不接受任何参数作为输入。
  3. 最适合与Angular页面和Angular元素一起使用。
  4. 在需要查找是否存在元素时使用的第一优先级。

elm.isElementPresent(subLoc)-(当有子定位符时elm

  1. 是的扩展,ElementFinder因此在执行任何操作之前等待Angular解决。
  2. 用于检查作为父级的子元素的元素的存在。它以sub locator父级elm为参数。(仅与此和之间的区别elm.isPresent()
  3. 最适合与Angular页面和Angular元素一起使用。
  4. 在需要检查父项的子元素是否存在时使用的第一优先级。

browser.isElementPresent(element || Locator)
--

  1. 是的实现,webdriver因此不等待角度稳定下来。
  2. 如果使用同一定位符定位多个元素,则将a locator或an element作为参数并使用第一个结果。
  3. 最佳用于非角度页面。
  4. 在非角度页面上进行测试时使用的首选。

上面所有这些检查DOM中元素的存在并返回boolean结果。虽然角度和非角度特征不会影响这些方法的使用,但是当该方法默认等待角度建立时,还有一个附加的优势,即在找不到像角度的元素或状态元素引用异常的情况下,有助于避免错误,等等…

2020-06-26