2017-05-11 7 views
0

私はスクリーンショットをキャプチャするために 'takescreenshot'再利用可能なメソッドを作成し、必要な場所で呼び出しています。Java-Selenium:TakesScreenshotのサイズの問題

しかし、私はここで一つの奇妙な問題に直面しています。この機能が呼び出されるたびに、キャプチャされた画像のサイズは増加し続けます。 252K - > 278K - > 310K - > 400K ...

これらは私がExtentReportで使用している画像です。セレンのセッションイメージとは別に、黒い背景イメージがどこから来ているのかわからないままキャプチャされているのがわかります。

メソッドのコードは以下の通りである:私はextentreportコードにいくつかの既存のイメージをハードコーディング場合

public static void takescreenshot(ExtentTest Test,String Status){ 
    Date d=new Date(); 
    String CurrentTimeStamp=d.toString().replace(":", "_").replace(" ", "_"); 

    File scrFile =((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
    FileUtils.copyFile(scrFile, new File(CurrentTimeStamp+".png")); 

    if(Status.equals("pass")){ 
     Test.log(LogStatus.PASS, "snapshot below:-"+CurrentTimeStamp+".png")); 


    }else if(Status.equals("fail")){  
     Test.log(LogStatus.FAIL, "snapshot below:-"+CurrentTimeStamp+".png")); 

    } 
} 

はその後、すべてが正常に動作します。

この問題を抱える人は誰もいません。

+0

「既存のイメージをエクステントレポートのコードにハードコードしておけば、すべて正常に動作します。」 - あなたはほとんどそれを持っていると思います。おそらく、問題は画像の使用方法です。 'takescreenshot'メソッド自体には何の問題もありません。 –

答えて

0

私はうまく動作する要素のスクリーンショットをキャプチャするコードを書いていました。これがあなたに役立つかもしれません。私はExtendreportが何であるか分からないので、そこにあなたを助けることはできません。

public static void takeElementScreenshot(WebDriver driver, WebElement element){ 
      try{ 

       // Get entire page screenshot 
       File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
       BufferedImage fullImg = ImageIO.read(screenshot); 

       // Get the location of element on the page 
       Point point = element.getLocation(); 

       // Get width and height of the element 
       int eleWidth = element.getSize().getWidth(); 
       int eleHeight = element.getSize().getHeight(); 

       // Crop the entire page screenshot to get only element screenshot 
       BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(), 
        eleWidth, eleHeight); 
       ImageIO.write(eleScreenshot, "png", screenshot); 

       // Copy the element screenshot to disk 
       File screenshotLocation = new File("D:\\Screenshot.png"); 
       FileUtils.copyFile(screenshot, screenshotLocation); 
       } 
       catch(Exception e){ 

       } 
     } 
+0

私は失敗シナリオのwebelementを取得することはできませんので、その場合は、要素の場所を取得する – chetan

+0

ああ、その場合、上記のコードは動作しません。それは引数としてWebElementを期待しています。あなたの場合は、要素の位置を使用する以外のロジックを使用して、フルページから目的の要素を切り捨てる必要があるかもしれません。 – AswathyPrasad

関連する問題