Home > Mobile >  Selenium - Filter/ loop through elements to check for specific text
Selenium - Filter/ loop through elements to check for specific text

Time:01-26

As Java is not my "best language" I would like to ask for support. I'm trying to validate if element from the list contains a specific value.

  1. I'm having element which locates at least 5 elements

  2. I'm trying to get that element: eg. List<WebElement> elementsList = getWebElementList(target, false);

  3. I'm trying to validate if specific text is a part of the taken list. By doing something like:

    elementsList.contains(valueToCheck);

it does not work...

also I found a way of using stream() method which looks more/less like this but I'm having troubles with continuation:
elementsList.stream().filter(WebElement::getText.....


Can you please explain me how lists are handled in Java in modern/ nowadays way? In C# I was mostly using LINQ but don't know if Java has similar functionality.

CodePudding user response:

Once you get the element list.You can try something like that. this will return true or false.

elementsList.stream().anyMatch(e -> e.getText().trim().contains("specficelementtext")

CodePudding user response:

You can not apply contains() method directly on a list of WebElement objects.
This method can be applied on String object only.
You also can not extract text directly from list of WebElement objects.
What you can do is:
Get the list of WebElements matching the given locator, iterate over the WebElements in the list extracting their text contents and checking if that text content contains the desired text, as following:

public static boolean waitForTextInElementList(WebDriver driver, By locator, String expectedText, int timeout) {
    try {
        List<WebElement> list;
        for (int i = 0; i < timeout; i  ) {
            list = driver.findElements(locator);
            for (WebElement element : list) {
                if (element.getText().contains(expectedText)) {
                    return true;
                }
            }
            i  ;
        }
    } catch (Exception e) {
        ConsoleLogger.error("Could not find the expected text "   expectedText   " on specified element list"   e.getMessage());
    }
    return false;
}
  • Related