如何通过Selenium脚本仅显示可见图像

时间:2016-10-03 07:48:14

标签: selenium

现在我的应用程序在前端只显示了12个图像,但在通过xpath获取时,它显示了18个图像。

使用x-path as:

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张图片。

2 个答案:

答案 0 :(得分:1)

你想在这里验证什么?如果您要验证活动图像(在您的问题中我认为它是12),请使用动态xpath / css以及与活动图像相关的属性。如果您可以共享HTML代码,我们会很容易。

答案 1 :(得分:0)

你可以运行一个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\" && 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++;
    }
}

我希望这会有所帮助。