Selenium中的“可点击”元素是否意味着它“可见且存在”?

时间:2014-03-26 22:46:26

标签: selenium selenium-webdriver webdriver

在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

2 个答案:

答案 0 :(得分:3)

是的,可点击元素需要元素可见。如果元素被隐藏,Click()将失败并抛出ElementNotVisibleException

示例:对于以下隐藏的spanClick()会抛出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实施情况。