【问题标题】:Selenium 2.0 Web Driver: implementation of isTextPresentSelenium 2.0 Web 驱动程序:isTextPresent 的实现
【发布时间】:2011-12-11 16:44:02
【问题描述】:

我正在寻找一个可行的实现。我想出的最好的是:

    public boolean isTextPresent(String string) {

        for (WebElement e : drv.findElements(By.cssSelector("*"))) {

            if (e.isDisplayed() && e.getText().contains(string)) {
                return true;
            }

        }
        return false;
    }

【问题讨论】:

  • 您在查找文本时不能更具体吗?这会很慢,因为您可能会遍历整个 DOM。 IE将是最糟糕的。如果您至少可以将搜索范围缩小一些会更好......
  • 当然你是对的。我使用 Jenkins 在那里运行,所以时间真的不是问题。

标签: selenium junit


【解决方案1】:

一个更快的方法是这样的:

public boolean isTextPresent(string str)
{
    IWebElement bodyElement = driver.FindElement(By.TagName("body"));
    return bodyElement.Text.contains(str);
}

它在 C# 中,但概念相同。获取 body 标签的文本会自动返回所有嵌套元素的文本。我唯一不确定的是是否包含隐藏元素。

【讨论】:

  • 看起来不错。这也会捕获不可见的文本吗?例如。 JavaScript?
  • 不,这将返回屏幕上可见的文本,即元素的内部文本。例如:

    这段文字

    .
【解决方案2】:

以下在 WebDriver 中使用 Java 的代码应该可以像 isTextPresent 一样正常工作:

assertTrue(driver.getPageSource().contains("Welcome Ripon"));
assertTrue(driver.findElement(By.id("widget_205_after_login")).getText().matches("^[\\s\\S]*Welcome ripon[\\s\\S]*$"));

【讨论】:

    猜你喜欢
    • 2011-07-11
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 2020-05-04
    • 2018-01-22
    相关资源
    最近更新 更多