2015-07-21 164 views
2

我想捕捉屏幕的http://www.flipkart.com使用硒與Firefox。硒屏幕捕捉 - 圖像不可用

public class App { 

    private static final String APP_URL = "http://www.flipkart.com"; 

    public static void main(String[] args) { 
     WebDriver webDriver = null; 
     try { 
      webDriver = new FirefoxDriver(); 
      webDriver.get(APP_URL); 
      webDriver.manage().window().maximize(); 

      if (webDriver instanceof TakesScreenshot) { 
       TakesScreenshot screenshot = (TakesScreenshot) webDriver; 
       File imageFile = screenshot.getScreenshotAs(OutputType.FILE); 
       FileUtils.copyFile(imageFile, new File(
         "C:\\Captures\\captured.png")); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (webDriver != null) { 
       webDriver.quit(); 
      } 
     } 
    } 
} 

它需要整頁的屏幕截圖,但它顯示的內頁圖像許多其他圖像不可用。我無法糾正它。幫我。

Screen Shot Taken With Selenium

回答

6

最好的解決辦法是通過頁面滾動,然後採取截圖

//scroll to the bottom of the page 
((JavascriptExecutor) webDriver).executeScript("window.scrollTo(0,document.body.scrollHeight)"); 
////scroll to the top of the page 
((JavascriptExecutor) webDriver).executeScript("window.scrollTo(0,0)"); 

採取截圖

我之前添加這些行試圖用它工作得很好

希望這有助於你上面的解決方案...請回來,如果您有任何疑問

+1

這工作完美,似乎是頁面滾動時加載圖像 –

0

的原因是,加載頁面時通過Ajax的圖像。在製作屏幕截圖之前放置一個Thread.sleep()。這不是一個很好的解決方案,但它應該工作:)

0

使用此功能捕獲已打開頁面的圖像,並放置相應的文件夾路徑。但所有圖像都以png格式存儲。

public static void captureScreenShot(WebDriver ldriver) { 

     // Take screenshot and store as a file format 
     File src = ((TakesScreenshot) ldriver).getScreenshotAs(OutputType.FILE); 
     try { 
      // now copy the screenshot to desired location using copyFile method 
      // title=ldriver.getTitle(); 
      FileUtils.copyFile(src, new File(System.getProperty("user.dir") + "\\src\\data\\" + siteCapture + "\\" 
        + System.currentTimeMillis() + ".png")); 
     } 

     catch (IOException e) 

     { 

      System.out.println(e.getMessage()); 

     } 

    }