- 硒:硒如何识别可见或不可见的元素?是否有可能在 DOM 中加载但未在 UI 上呈现?我想验证元素可点击的场景,我知道网络驱动器有方法“ElementToBeClickable”但是,我想知道内部工作。请帮助我。
- 另外,如何处理元素在 DOM 中加载但 UI 显示正在加载的情况,如何等待完成加载?
- 请让我知道,如果 UI 没有加载,那么 selenium 会直接调用 DOM 元素,或者如果 UI 元素正在加载,那么它会执行失败?我真的很感激对此的更多技术解释。
问问题
4972 次
1 回答
4
只要元素在HTML DOM中出现或可见, Selenium就可以识别元素的存在或可见性。从用户的角度来看,您可以调用WebElement上的方法来检查是否显示了预期的WebElement。根据当前的实现,Selenium可能无法区分加载的元素和渲染的元素。ExpectedConditions类中的ElementToBeClickable方法设置检查元素是否可见的期望
isDisplayed()
并启用,以便您可以单击它。当元素在 DOM 中加载但 UI 显示正在加载时,您仍然需要等待JavaScript和AJAX 调用完成页面加载,以便页面上的所有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 回答