【问题标题】:Using Selenium, best way to verify something is not on the page after a max time?使用 Selenium,在最长时间后验证某些内容不在页面上的最佳方法是什么?
【发布时间】:2015-01-11 20:54:44
【问题描述】:

使用 Selenium,在最长时间后验证某些内容不在页面上的最佳方式(或设计模式)是什么?

我知道我们可以等待一个带有字符串的元素出现,就像这样:

(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                return d.getTitle().toLowerCase().startsWith("cheese!");
            }
        });

但是,如果我想确保在 10 秒内,OPPOSITE 为真,并且页面上没有出现任何包含特定文本的元素,该怎么办?基本上,这种情况通常会(但并非总是)达到最大超时。

在我的用例中,重要的是对方法的调用不抛出任何将退出 JUnit/TestNG 测试用例的异常,而是始终允许连续的测试步骤继续并发生最终的 softAsserts。

方法应该有这样的签名:

Boolean verifyElementWithTextDoesNotAppear( By locator, String, text, long timeout )

你们中的任何人都可以使用一种可以最有效地做到这一点的好的设计模式吗?该方法不得在达到超时之前或之后抛出 TimeoutException,也不得抛出任何特定类型的 WebDriverException,并且必须可能返回可靠的布尔结果。

【问题讨论】:

    标签: selenium


    【解决方案1】:

    到目前为止,我的最佳猜测是,如果您期望 FALSE,我认为调用此方法是安全的:

    public Boolean elementExistsWithinSeconds(By locator, int seconds)
    {
        ExpectedCondition<List<WebElement>> elementListCondition = 
               ExpectedConditions.presenceOfAllElementsLocatedBy(locator);
        WebDriverWait wait = webDriverManager.getCachedWebDriverWait(seconds);
        try {
            List<WebElement> elementList = wait.until(elementListCondition);
            if ( elementList.size() > 0 ) return Boolean.TRUE;
        } catch ( TimeoutException te ) {
            LOG.debug( "Element '" + locator.toString() + "' with text '" + text +
                 "' was not found within timeout.", te);            
        }
        return Boolean.FALSE;
    }
    

    【讨论】:

      【解决方案2】:

      在 testng 中,我们有一个不会抛出异常的特性。 expectedExceptions = NoSuchElementException.class 放在@Test 方法中。

      【讨论】:

      • 另外,使用 Selenium 的 FluentWait,您可以执行 .ignoring 流利的命令,该命令也忽略异常,但这不是我的问题所在。我在网上找不到一个与我想做的类似的例子,这就是我问它的原因。
      猜你喜欢
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2020-01-31
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多