当前位置: 首页 > 面试题库 >

使用带有Java的Selenium WebDriver检查元素不存在的最佳方法

章昆琦
2023-03-14
问题内容

我正在尝试下面的代码,但似乎不起作用…有人可以向我展示最佳方法吗?

public void verifyThatCommentDeleted(final String text) throws Exception {
    new WebDriverWait(driver, 5).until(new ExpectedCondition<Boolean>() {
            @Override
            public Boolean apply(WebDriver input) {
                try {
                    input.findElement(By.xpath(String.format(
                            Locators.CHECK_TEXT_IN_FIRST_STATUS_BOX, text)));
                    return false;
                } catch (NoSuchElementException e) {
                    return true;
                }
            }
        });
    }

问题答案:

我通常使用两种方法(成对)来验证元素是否存在:

public boolean isElementPresent(By locatorKey) {
    try {
        driver.findElement(locatorKey);
        return true;
    } catch (org.openqa.selenium.NoSuchElementException e) {
        return false;
    }
}

public boolean isElementVisible(String cssLocator){
    return driver.findElement(By.cssSelector(cssLocator)).isDisplayed();
}

请注意,硒有时可以在DOM中找到元素,但是它们是不可见的,因此硒将无法与其交互。因此,在这种情况下,检查可见性的方法会有所帮助。

如果要等到元素出现,我发现最好的解决方案是使用流畅的等待:

public WebElement fluentWait(final By locator){
    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(30, TimeUnit.SECONDS)
            .pollingEvery(5, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class);

    WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            return driver.findElement(locator);
        }
    });

    return foo;
};

希望这可以帮助)



 类似资料:
  • 本文向大家介绍检查Java ArrayList中元素的存在,包括了检查Java ArrayList中元素的存在的使用技巧和注意事项,需要的朋友参考一下 java.util.ArrayList.contains()方法可用于检查ArrayList中是否存在元素。此方法具有单个参数,即要测试其在ArrayList中是否存在的元素。如果该元素存在于ArrayList中,则返回true;如果不存在该元素,

  • 问题内容: 在调用对象的函数之前,我需要检查对象是否为null,以避免引发。 最好的方法是什么?我考虑过这些方法。 哪一种是Java最佳编程实践? 问题答案: 方法4是最好的。 将使用短路评估,这意味着如果a的第一个条件为假,则评估结束。

  • 问题内容: 使用Java 使用SeleniumRC来检测网页上的元素以进行自动测试的最佳方法是什么?我知道有XPath元素和CSS元素,但是哪一个最好? 谢谢!尼丁 问题答案: 我认为,最准确的方法是XPath,因为您可以使用XPath来描述DOM中元素的确切位置,但是在某些情况下CSS定位器比XPath更好。 使用硒的ID定位器是最简单的方法,但是除非您要查找的元素具有ID并不总是有用的。 使用

  • 问题内容: 在实时自动化中,在对每个元素执行某些操作之前,我们是否要检查每个元素的存在? 无论哪里有声明,都有机会出现 NoSuchElementException 。我的问题是我们是否每次都要检查元素的存在? 是否每个语句都必须用块包围? 问题答案: 您可能会发现使用AbstractWebDriverEventListener类特别有用。此类实现WebDriverEventListener接口,

  • 在实时自动化中,在对每个元素执行操作之前,我们是否检查它们的存在(在测试中)? 只要有一个语句,就有可能出现NoTouchElementException。我的问题是我们是否每次都检查元素的存在? 是否每个语句都需要被块包围?

  • 我有一个变量(testvariable),根据变量的isNull,我需要做一个方法调用,如下所示 在可选的