如何检查页面上是否显示某些文本数据

时间:2017-07-20 17:57:02

标签: java selenium selenium-webdriver automation

我想检查一下页面是否有特定的文字。如果我能马上查看一些文本,那就最好。

例如,如果有“客户”,“客户”,“订单”

这是HTML代码。

<div class="findText"><span>Example text. Football.</span></div>

检查完之后,我将使用if条件,如此处所示。这是我尝试这样做的,但这不是最好的选择。除了我不能检查更多的单词,我尝试了||仅

 if(driver.getPageSource().contains("google"))  {

                driver.close();
                driver.switchTo().window(winHandleBefore);
                }

此外,是否可以抛出大量的单词列表以检查它们是否存在?

2 个答案:

答案 0 :(得分:2)

if(stringContainsItemFromList(driver.getPageSource(), new String[] {"google", "otherword"))
{
    driver.close();
    driver.switchTo().window(winHandleBefore);
}

 public static boolean stringContainsItemFromList(String inputStr, String[] items)
    {
        for(int i =0; i < items.length; i++)
        {
            if(inputStr.contains(items[i]))
            {
                return true;
            }
        }
        return false;
    }
来自Test if a string contains any of the strings from an array

stringContainsItemFromList()方法

如果你想获得该元素的文本,你可以使用类似这样的东西而不是driver.getPageSource()......

driver.findElement(By.cssSelector("div.findText > span")).getText();

答案 1 :(得分:2)

查看Java 8 Streaming API

import java.util.Arrays;

public class Test {

    private static final String[] positiveWords = {"love", "kiss", "happy"};

    public static boolean containsPositiveWords(String enteredText, String[] positiveWords) {
        return Arrays.stream(positiveWords).parallel().anyMatch(enteredText::contains);
    }

    public static void main(String[] args) {
        String enteredText1 = " Yo I love the world!";
        String enteredText2 = "I like to code.";
        System.out.println(containsPositiveWords(enteredText1, positiveWords));
        System.out.println(containsPositiveWords(enteredText2, positiveWords));
    }
}

输出:

true
false

您也可以使用.parallelStream()来使用ArrayList。