2013-08-01 77 views
1

我試圖設計一種方式來獲取在瀏覽器中運行的Java applet的屏幕截圖,但似乎無法使其工作。我管理成功使用cutycapt從「正常」網站獲取截圖,但很快我發現qtwebkit它似乎依賴於渲染不支持Java。我也試過IEcapt認爲它會以某種方式繼承系統上IE的Java渲染能力,但它不起作用。 Flash在IEcapt中似乎也沒有工作,並且它沒有啓用插件的標誌,所以我認爲功能也不存在。以編程方式獲取Java applet的屏幕截圖

有沒有人有任何想法,如何可以像一個/index.jsp像一個Windows或Linux命令行的圖像?

回答

0

您是否嘗試過使用java.awt.Robot?

Rectangle rect = yourGragphicsConfiguration.getBounds(); 
    BufferedImage image = new Robot().createScreenCapture(rect); 

如果你知道你的小應用程序的位置,你也許能

BufferedImage dest = image.getSubimage(appletX, appletY, appletHeight, appletWidth); 
+0

對不起,我應該規定以任何方式修改應用程序是不是一種選擇,我找軟件運行的Java小程序,並給我:

Point point = new Point(0, 0); SwingUtilities.convertPointToScreen(point, component); Rectangle region = component.getBounds(); region.x = point.x; region.y = point.y; BufferedImage image= new Robot().createScreenCapture(region); 

該信息是從文章取圖形輸出(我不打算自己構建軟件) – pzkpfw

3

硒的webdriver可能會在這裏很有用得到它:

http://docs.seleniumhq.org/projects/webdriver/

它用於p rimarily爲測試自動化,但它可能會有所幫助。

它可以被使用,例如,像這樣:

import org.openqa.selenium.*; 

WebDriver driver = new FirefoxDriver(); // create a Firefox webdriver instance 
driver.get("http://www.google.com/"); // navigate to page 
File screenshotFile = ((Screenshot)driver).getScreenshotAs(file); // capture screenshot 
                    // and save to a file 

// here you can trigger any necessary actions on the website: 
Webelement element = driver.findElement(By.name("q")).sendKeys("xxxxx"); 
element.click(); 
new WebDriverWait(driver, 10)).until(ExpectedConditions.titleContains("xxxxx")); 

// and capture a new screenshot once the content has changed 
File xxxScreenshotFile = ((Screenshot)driver).getScreenshotAs(file); 
+0

我對於不同的Selenium產品的範圍有些困惑。這只是WebDriver?它可以在Linux服務器上的CLI上運行嗎?你能好好詳細闡述一下你將如何設置它?我很欣賞這個指針,但是因爲我對Selenium一無所知,所以我無法確定這是否會成功。 – pzkpfw

+0

Selenium Webdriver是一種較新的方法。還有之前創建的Selenium Remote Control,但現在已被視爲棄用。爲了在Web上使用Webdriver,您應該下載並運行Selenium Standalone Server並導入該庫。你可以在這裏找到很多有用的文檔:http://www.seleniumhq.org/。您可以在Linux中從控制檯運行webdriver。 – OlgaMaciaszek

-1

你可以採取的Swing/AWT組件的屏幕截圖。

這可以通過2種方式完成。在這兩種情況下,組件都必須可見。

沒有機器人使用:

BufferedImage image = new BufferedImage(component.getWidth(), 
component.getHeight(), BufferedImage.TYPE_INT_ARGB); 
    Graphics g = image.getGraphics(); 
    component.paint(g); 

隨着機器人使用:

在這種情況下,其中該組件位於將進行區域的屏幕截圖。也就是說,如果組件與另一個應用程序窗口重疊,那麼屏幕截圖將包含另一個窗口的區域。 Frequently Asked Questions during Java applet development

相關問題