如何检查某些文本数据是不是出现在页面上

Posted

技术标签:

【中文标题】如何检查某些文本数据是不是出现在页面上【英文标题】:How to check if some of the text data appears on the page如何检查某些文本数据是否出现在页面上 【发布时间】:2017-12-26 13:56:27 【问题描述】:

我想检查页面是否有特定的文本。最好能马上查出几条短信。

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

这里是 html 代码。

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

检查后,我会使用这里的 if 条件。这是我的尝试,但这不是最好的选择。此外,我无法检查更多的单词,我尝试使用 ||仅限。

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

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

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

【问题讨论】:

【参考方案1】:
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();

【讨论】:

感谢您的回复。我目前正在测试这种方法。看起来它的工作。但是,可以在不使用 .getPageSource 的情况下做同样的事情吗?就像使用我发布的这个 HTML 代码一样。 是的,例如,您可以这样做(请参阅更新后的帖子以获得更好的格式) driver.findElement(By.cssSelector("div.findText > span")).getText()【参考方案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。

【讨论】:

以上是关于如何检查某些文本数据是不是出现在页面上的主要内容,如果未能解决你的问题,请参考以下文章

检查某些字符串是不是在页面上

如何添加检查用户是不是在文本字段中输入了某些内容?

如何防止 wordpress 插件出现在某些页面上

RobotFramework,如何检查页面上的文本

VSCode 如何禁用某些格式的代码错误检查(红色波浪线)?

WordPress 维护页面随机出现