在 Protractor 中,基本上有3种方法可以检查元素是否存在:
var elm = element(by.id("myid"));
browser.isElementPresent(elm);
elm.isPresent();
elm.isElementPresent();
这些选项是否等效且可互换,通常应首选哪个?
最佳答案
所有功能均以相似的方式存在细微的差异。这是我发现的一些差异-
elm.isPresent()
-
ElementFinder
的扩展,因此waits for Angular在执行任何操作之前先沉降在页面上。 elm
是element(locator)
或ElementFinder
而不是ElementArrayFinder
时,它可以工作。如果使用指定的locator
返回了多个元素,则检查第一个元素是否在DOM中为isEnabled()
。不接受任何参数作为输入。 elm.isElementPresent(subLoc)
-(当存在elm
的子定位符时)ElementFinder
的扩展,因此在执行任何操作之前等待Angular在页面上稳定下来。 sub locator
作为父elm
的参数。 (仅此和elm.isPresent()
之间的区别)browser.isElementPresent(element || Locator)
-webdriver
的实现,因此不必等待角度稳定下来。 locator
或element
作为参数,如果使用同一定位器定位多个元素,则使用第一个结果。 上面所有这些检查DOM中元素的存在并返回
boolean
结果。虽然角度和非角度特征不会影响这些方法的使用,但是当该方法默认等待角度建立时,还有一个额外的优势,即在找不到像角度的元素或状态元素引用异常的情况下,有助于避免错误,等等...关于javascript - 在 Protractor 中,browser.isElementPresent与element.isPresent与element.isElementPresent,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33019429/