为什么没有ExpectedConditions方法返回布尔值以获取元素可见性?例如,存在布尔值“ AND的不可见性和陈旧性”方法,但没有“ visibility”和“ present”?为什么?我们应该使用not方法吗?
boolean invisible = wait.
until( ExpectedConditions.invisibilityOfElementLocated( locator ) );
boolean unpresent = wait.
until( ExpectedConditions.stalenessOf( locator );
我可以想到的只有两种解决方法:
boolean found = wait.
until( ExpectedConditions.not.invisibilityOfElementLocated( locator ) );
这是我首选的解决方法(因为在这种情况下,我的FluentWait不需要忽略ElementNotFoundException):
boolean found = false;
List<WebElement> foundElements = wait
.until( ExpectedConditions.visibilityOfAllElementsLocatedBy( locator ) );
found = foundElements.size() > 0;
在ExpectedConditions类中有直接的“可见性”方法(返回Boolean;不仅是WebElement)是否有意义,还是我错过了一些东西?
我假设ExpectedConditions
开发人员想限制API的大小,因此,他们没有visibilityOf
为每种类型创建两个方法(一个返回boolean
,一个返回)WebElement
,而是仅创建了一个返回WebElement
或抛出的方法TimeoutException
。
为什么visibilityOf
退货WebElement
又invisibilityOf
退货boolean
?
在visibilityOf
你可以使用你在等元素或忽略返回值。但是,当您等待WebElement
消失时,您真的无法对它做任何事情,那么为什么要归还它呢?更不用说此条件期望元素在DOM中不可见或不存在。
顺便说一句,ExpectedConditions.visibilityOfAllElementsLocatedBy
要么返回List
大于0的大小,要么返回throws TimeoutException
。支票foundElements.size() > 0
不起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句