2016-10-03 2 views
0

現在、私のアプリケーションではフロントエンドに12画像しか表示されていませんが、xpathからフェッチする間に18画像が表示されます。Seleniumスクリプトで可視画像のみを表示する方法

使用されるXパスとして:

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とページソースを質問に追加してください... – Grasshopper

答えて

1

あなたはここで検証しようとしていますか?あなたがアクティブな画像を検証することを望んでいるのであれば(私はそれが12であると信じています)、アクティブな画像に関連する属性を持つ動的なxpath/cssを使用してください。 HTMLコードを共有できるのは簡単です。

+0

こんにちは、すべてアクティブな画像ですが、解像度の画面イメージに基づいて表示されます – karthik

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++; 
    } 
} 

これが役立ちます。

関連する問題