Как отображать только видимые изображения с помощью скриптов Selenium

#selenium

#селен

Вопрос:

Прямо сейчас мое приложение отображает только 12 изображений во внешнем интерфейсе, но при загрузке через xpath оно показывает 18 изображений.

Используется x-path как:

 driver.findElemnt(By.xpath("xpath")).size();
  

Используемый код:

 int showCount = driver.findElements(By.xpath(ObjRepoProp.getProperty("homePageShowLogoImage_XPATH"))).size();

for (int i = 1; i <= showCount; i  ) {
driver.findElement(By.xpath(ObjRepoProp.getProperty("homePageShowLogoImage_XPATH"))).isDisplayed();
                        i=i 1;
                        log.info(i   "shows are present in GET TO KNOW THE SHOW section (Count of only shows which are displaying on screen).n");
}
  

Мне нужно отобразить только 12 изображений.

Комментарии:

1. Добавьте фактический xpath и источник страницы к вашему вопросу…

Ответ №1:

Что вы пытаетесь здесь проверить? Если вы хотите проверить активные изображения (в вашем вопросе, я полагаю, это 12), используйте динамический xpath / css с атрибутом, связанным с активными изображениями. Нам было бы легко, если бы вы могли поделиться HTML-кодом.

Комментарии:

1. Привет, все они являются активными изображениями, но основаны на отображении изображений на экране с разрешением

Ответ №2:

Вы можете запустить javascript, чтобы убедиться, что все изображения загружены правильно, найдите небольшой фрагмент кода ниже, чтобы сделать это.

 EventFiringWebDriver eventFiringWebDriver = new EventFiringWebDriver (driver);

List<WebElement> allImages = eventFiringWebDriver.findElements(By.tagName("img"));
int countBrokenImages = 0;
List<String> brokenimageUrl = new ArrayList<String>();

String script = "return (typeof arguments[0].naturalWidth!="undefined" amp;amp; arguments[0].naturalWidth>0)";

for (WebElement image : allImages) 
{   
    Object imgStatus = eventFiringWebDriver.executeScript(script, image);          
    if(imgStatus.equals(false))
    {
        String  currentImageUrl = image.getAttribute("src");
        String imageUrl = currentImageUrl ;
        brokenimageUrl.add(imageUrl);
        countBrokenImages  ;
    }
}
  

Надеюсь, это поможет.