2

嗨,我想计算一个文本 Ex:“VIM LIQUID MARATHI”出现在使用 selenium webdriver(java) 的页面上的次数。请帮忙。

我在主类中使用以下内容检查页面中是否出现文本

assertEquals(true,isTextPresent("VIM LIQUID MARATHI"));

和一个返回布尔值的函数

protected boolean isTextPresent(String text){
    try{
        boolean b = driver.getPageSource().contains(text);
        System.out.println(b);
        return b;
    }
    catch(Exception e){
        return false;
    }
}

...但不知道如何计算出现次数...

4

4 回答 4

6

using 的问题getPageSource()是,可能存在与您的字符串匹配的 id、类名或代码的其他部分,但这些部分实际上并未出现在页面上。我建议只getText()在 body 元素上使用,它只会返回页面的内容,而不是 HTML。如果我正确理解了您的问题,我认为您正在寻找的更多。

// get the text of the body element
WebElement body = driver.findElement(By.tagName("body"));
String bodyText = body.getText();

// count occurrences of the string
int count = 0;

// search for the String within the text
while (bodyText.contains("VIM LIQUID MARATHI")){

    // when match is found, increment the count
    count++;

    // continue searching from where you left off
    bodyText = bodyText.substring(bodyText.indexOf("VIM LIQUID MARATHI") + "VIM LIQUID MARATHI".length());
}
System.out.println(count);

该变量count包含出现次数。

于 2013-08-26T17:41:00.680 回答
5

有两种不同的方法可以做到这一点:

int size = driver.findElements(By.xpath("//*[text()='text to match']")).size();

这将告诉驱动程序找到所有具有文本的元素,然后输出大小。

第二种方法是搜索 HTML,就像你说的那样。

int size = driver.getPageSource().split("text to match").length-1;

这将获取页面源,只要找到匹配项就拆分字符串,然后计算它进行的拆分次数。

于 2013-08-26T14:02:34.213 回答
0

您可以尝试使用 webdriver 执行 javascript 表达式:

((JavascriptExecutor)driver).executeScript("yourScript();");

如果您在页面上使用 jQuery,则可以使用 jQuery 的选择器:

((JavascriptExecutor)driver).executeScript("return jQuery([proper selector]).size()");

[正确的选择器] - 这应该是匹配您正在搜索的文本的选择器。

于 2013-08-26T12:12:37.530 回答
0

尝试

int size = driver.findElements(By.partialLinkText("VIM MARATHI")).size();
于 2013-08-28T13:28:27.133 回答