Protractor 什么时候应该在ExpectedConditions.presenceOf(元素)上使用element.isPresent()?
在端到端测试我们的应用程序时,我经常在等待状态转换(模式关闭、按钮出现等)。盲目实验导致我有时使用Protractor 什么时候应该在ExpectedConditions.presenceOf(元素)上使用element.isPresent()?,protractor,Protractor,在端到端测试我们的应用程序时,我经常在等待状态转换(模式关闭、按钮出现等)。盲目实验导致我有时使用browser.wait(预期条件.presenceOf(someElement),有时使用browser.wait(someElement.isPresent()) 对我来说,这些名称意味着它们可以互换。但事实并非如此。我使用这些名称的情况是否有助于我判断何时使用哪种名称?根据我的经验,我使用了element.isPresent()来表示我不想具体验证某些内容的情况。例如,我可以编写: eleme
browser.wait(预期条件.presenceOf(someElement)
,有时使用browser.wait(someElement.isPresent())
对我来说,这些名称意味着它们可以互换。但事实并非如此。我使用这些名称的情况是否有助于我判断何时使用哪种名称?根据我的经验,我使用了
element.isPresent()
来表示我不想具体验证某些内容的情况。例如,我可以编写:
element.isPresent().then(function(elm){
if(elm) { //if the element is present, do something }
else { //if the element is not present, do something else }
});
但是,如果我需要某个元素存在/可见/可点击,以便执行expect或其他内容,那么我将使用浏览器。等待(EC.presenceOf/visibilityOf/element tobelickable(element))
它还取决于您需要等待的元素。如果这是一个需要单击的按钮,则必须使用
elementtobelickable
如果我们查看代码,我们将看到该方法如下所示
isPresent(): wdpromise.Promise<boolean> {
return this.count().then((count) => {
return count > 0;
});
}
事实上,它们的作用是相同的。但请注意,ExpectedConditions运算符,如not
、或等。expectingExpectedConditions
用作参数,而isPresent
不是
有时您需要更复杂的条件,而不是检查某个特定元素是否存在browser.wait(someElement.isPresent())
。这就是预期条件
构造非常有用的地方,这就是你需要呈现的地方
已经有了一些很好的答案,所以我不会添加重复他们所说的一切的答案。基本上,我使用。isPresent()
当我需要检查一个元素是否在我期望的DOM中存在时。我使用.presenceOf()
当我需要等待一个元素出现在DOM中时。也就是说,它以前不在DOM中,但我做了一些最终会出现的事情。就像你提到的,等待按钮或字段出现/消失或类似的事情。
presenceOf(elementFinder: ElementFinder): Function {
return elementFinder.isPresent.bind(elementFinder);
};