gpt4 book ai didi

javascript - 在 Protractor 中, browser.isElementPresent vs element.isPresent vs element.isElementPresent

转载 作者:行者123 更新时间:2023-12-03 01:00:13 25 4
gpt4 key购买 nike

在 Protractor 中,基本上有 3 种方法来检查元素是否存在:

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

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

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

最佳答案

所有功能都以类似的方式运行,但有细微的差别。以下是我发现的一些差异 -

elm.isPresent() -

  1. ElementFinder 的扩展,所以 waits for Angular在执行任何操作之前在页面上进行设置。
  2. elmelement(locator)ElementFinder 而不是 ElementArrayFinder 时,它起作用。如果使用指定的locator返回多个元素,则检查第一个元素是否在DOM中isEnabled()。不接受任何参数作为输入。
  3. 最适合与 Angular 页面和 Angular 元素配合使用。
  4. 每当需要查找元素是否存在时首先使用的首选项。

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

  1. ElementFinder 的扩展,因此在执行任何操作之前等待 Angular 在页面上稳定下来。
  2. 用于检查父元素的子元素是否存在。它采用父 elm子定位器作为参数。 (这与 elm.isPresent() 之间的唯一区别)
  3. 最适合与 Angular 页面和 Angular 元素配合使用。
  4. 每当需要检查父元素的子元素是否存在时首先使用的首选项。

browser.isElementPresent(element || Locator) -

  1. webdriver 的实现,因此不需要等待 Angular 稳定下来。
  2. 采用定位器元素作为参数,如果使用同一定位器定位多个元素,则使用第一个结果。
  3. 最适合用于非 Angular 页面。
  4. 在非 Angular 页面上进行测试时首先使用的首选项。

以上所有内容都会检查 DOM 中是否存在元素并返回 boolean 结果。虽然 Angular 和非 Angular 特征不会影响这些方法的使用,但当该方法默认等待 Angular 稳定时,还有一个额外的优点,有助于避免在未找到类似 Angular 元素或状态元素引用异常时出现错误,等等...

关于javascript - 在 Protractor 中, browser.isElementPresent vs element.isPresent vs element.isElementPresent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33019429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com