java - 检查 WebElement 对象中是否存在元素

标签 java selenium

我需要检查 Java Selenium 中的页面上是否存在某个元素。不幸的是,所有关于搜索的解释都是使用 FindElements(By) 进行的,但我有一个将 WebElement 直接传递给该方法的结构,因为我的元素已经由 PageFactory 发送。

所以我的结构如下:

public static void verifyElementPresentStatus(WebElement targetElement, String elementName) {
    Boolean elementPresent = MISSING PART
    StepLogger.subVerification(elementName + " should be present");
    Assert.assertTrue(
            elementPresent,
            ValidationHelper.getPresentValidation(elementName)
    );
}

并调用类似的方法

ExpectationHelper.verifyElementPresentStatus(
            Pages.HomePage().homeHeader,
            Pages.HomePageConstants().pageHeaderText
    );

有人知道如何做到这一点吗?

最佳答案

您无法编写接受 WebElement 作为参数并在所有情况下检查它是否存在的方法。这是因为,唯一可以引用不存在的 WebElement 对象的情况是该对象先前存在,然后从 DOM 中删除(“陈旧元素”)。为了确定某个元素是否第一次存在,您只能通过接受 By 参数而不是 WebElement 来实现。这样您就可以使用 findElements 并检查 count > 0。

关于java - 检查 WebElement 对象中是否存在元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815750/

相关文章:

java - 如何检测 Observable<Observable<Object>> 中所有包含的 Observable 的完成

Python、BS 和 Selenium

javascript - 使用 selenium 递归迭代多个网页并进行抓取

html - 如何找到 XPath 以单击具有相同名称的图像

java - SceneBuilder 不会加载我的自定义控件,它通过 FXML 引用另一个自定义控件

java - 如何以编程方式获取通过 Wifi 连接到交换机网络的其他设备的 IP 地址?

c# - Selenium click 方法正在执行然后超时

python - 如何在 selenium chromedriver 中使用经过身份验证的代理?

java - Android 将数据从 Activity 类传递到类

Java 数据类型到 Swift,反之亦然