在Selenium框架中,ExpectedConditions.elementIsClickable意味着元素也是“可见,启用和呈现”。 ExpectedConditions.presenceOfElementLocatedBy似乎只是一个简单的findElement调用。
通过查看源代码,以下是迄今为止我从方法中对ExpectedConditions行为的看法:
1. findElement() = can throw NoSuchElementException, or WebDriverException
2. elementToBeClickable() = is visible, !null, and enabled, catches
a StaleElementReferenceException
3. visbilityOf() = displayed, catches no exception
4. presenceOfElementLocated() = simple findElement call, catches findElement()
exceptions
5. stalenessOf() = true if findElement succeeds, can catch StaleElementReferenceException,
or findElement() exceptions
6. visibilityOfElementLocated() = same as stalenessOf, can catch
StaleElementReferenceException or the findElement() exceptions
答案 0 :(得分:3)
是的,可点击元素需要元素可见。如果元素被隐藏,Click()
将失败并抛出ElementNotVisibleException
。
示例:对于以下隐藏的span
,Click()
会抛出ElementNotVisibleException
消息Element is not currently visible and so may not be interacted with
。
var driver = new FirefoxDriver();
driver.Navigate().GoToUrl("data:text/html,<span id=\"hello\" style=\"display:none;\">Hello</span>");
driver.FindElement(By.Id("hello")).Click();
答案 1 :(得分:0)
Clickable表示该元素是Visible和Enabled。另一个单词元素是显示和启用 如有任何疑问,您可以随时查看ExpectedConditions实施情况。