3
  1. 硒:硒如何识别可见或不可见的元素?是否有可能在 DOM 中加载但未在 UI 上呈现?我想验证元素可点击的场景,我知道网络驱动器有方法“ElementToBeClickable”但是,我想知道内部工作。请帮助我。
  2. 另外,如何处理元素在 DOM 中加载但 UI 显示正在加载的情况,如何等待完成加载?
  3. 请让我知道,如果 UI 没有加载,那么 selenium 会直接调用 DOM 元素,或者如果 UI 元素正在加载,那么它会执行失败?我真的很感激对此的更多技术解释。
4

1 回答 1

4
  • 只要元素在HTML DOM中出现可见, Selenium就可以识别元素的存在可见性。从用户的角度来看,您可以调用WebElement上的方法来检查是否显示了预期的WebElement。根据当前的实现,Selenium可能无法区分加载的元素和渲染的元素。ExpectedConditions类中的ElementToBeClickable方法设置检查元素是否可见的期望isDisplayed()启用,以便您可以单击它。

  • 元素在 DOM 中加载但 UI 显示正在加载时,您仍然需要等待JavaScriptAJAX 调用完成页面加载,以便页面上的所有WebElement都变为可交互的。最多等待完全加载,您可以将其设置pageLoadStrategy正常,但可能仍需要诱导WebDriverWait以使预期的WebElement变为存在可见、可交互可点击

在这里您可以找到有关页面加载策略的详细讨论

  • 如果 UI 未加载, Selenium可能无法与一些 DOM 元素交互。

更新

根据您的反问,这里是WebElement的不同阶段以及用于检查阶段的相应ExpectedConditions :

  • 元素的存在

     presenceOfElementLocated(By locator)
     An expectation for checking that an element is present on the DOM of a page. This does not necessarily mean that the element is visible.
    
  • 元素的可见性

     visibilityOf(WebElement element)
     An expectation for checking that an element, known to be present on the DOM of a page, is visible. Visibility means that the element is not only displayed but also has a height and width that is greater than 0.
    
  • 点击的元素:

     elementToBeClickable(By locator)
     An expectation for checking an element is visible and enabled such that you can click it.
    

注意:根据文档元素是可点击的 - 它是显示和启用的。

于 2018-02-26T13:54:00.963 回答