Как исключить печать всех скрытых ссылок с сайта с использованием селена - PullRequest
0 голосов
/ 20 февраля 2020

Следующий код печатает все ссылки с веб-сайта, который также содержит некоторые скрытые ссылки. Эти скрытые ссылки отображаются как пустые на консоли. Как мне написать свой код таким образом, чтобы он печатал только видимую ссылку с сайта, а не печатал скрытые ссылки в виде пробелов.

driver.get("https://www.duke-energy.com/my-account/sign-in");

List<WebElement> link = driver.findElements(By.tagName("a"));

System.out.println("The total number of links on the page are :"+link.size());

for(int i=0;i<link.size();i++)
{
    String url=link.get(i).getText();
    System.out.println(url);
}

1 Ответ

2 голосов
/ 20 февраля 2020

Вы можете использовать поток и filter для фильтрации видимых ссылок, используя isDisplayed:

driver.get("https://www.duke-energy.com/my-account/sign-in");

List<WebElement> links = new WebDriverWait(driver, 5).until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.tagName("a")));
System.out.println("The total number of links on the page are :" + links.size());

List<WebElement> vlinks = links.stream().filter(WebElement::isDisplayed).collect(Collectors.toList());
System.out.println("The total number of visible links on the page are :" + vlinks.size());

for (WebElement link : vlinks) {
    String url = link.getText();
    System.out.println(url);
}

Видимые ссылки и текст не пустые:

links.stream().filter(e -> e.isDisplayed() && !e.getText().isEmpty())
        .collect(Collectors.toList())
        .forEach(e -> System.out.println(e.getText()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...