2016-10-03 3 views
0

Momentan zeigt meine Anwendung nur 12 Bilder im Frontend an, aber beim Abrufen von xpath zeigt sie 18 Bilder an.So zeigen Sie nur sichtbare Bilder durch Selenium-Skripte an

Gebrauchte x-Pfad als:

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

Gebrauchte Code:

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"); 
} 

Ich brauche nur 12 Bilder anzuzeigen.

+1

Fügen Sie den tatsächlichen xpath und die Seitenquelle zu Ihrer Frage ... – Grasshopper

Antwort

1

Was möchten Sie hier überprüfen? Wenn Sie versuchen, die aktiven Bilder zu validieren (in Ihrer Frage glaube ich, dass es 12 ist), verwenden Sie das dynamische Attribut xpath/css mit Attribut, das sich auf aktive Bilder bezieht. Es wäre einfach für uns, wenn Sie den HTML-Code teilen können.

+0

Hallo, Alle sind aktive Bilder, aber basierend auf Auflösung Bildschirm Bilder angezeigt – karthik

0

Sie können ein Javascript ausführen, um sicherzustellen, dass alle Bilder ordnungsgemäß geladen sind, finden Sie das kleine Stück Code unten, um es zu tun.

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\" && 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++; 
    } 
} 

Ich hoffe, das hilft.

Verwandte Themen