Selenium:硒如何识别可见或不可见的元素?是否有可能它已加载到 DOM 中但未渲染到 UI 上?

Sun*_*nil 4 selenium dom selenium-webdriver webdriverwait expected-condition

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

Deb*_*anB 5

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

  • 元素加载到 DOM 中但 UI 显示加载正在进行时,您仍然需要等待JavaScript和AJAX 调用来完成页面加载,以便页面上的所有WebElement都变得可交互。最多等待完全加载,您可以将 设为正常但可能仍然需要引发WebDriverWait以使预期的WebElement变得存在可见可交互可点击pageLoadStrategy

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

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

更新

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

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