如何使用Java Selenium捕获远程网站

时间:2011-01-26 12:01:28

标签: java selenium

谁能告诉我如何使用Java Selenium捕获网页?举个例子......

5 个答案:

答案 0 :(得分:2)

见这里:Capturing screenshots from remote Selenium RC

本质上:

“要解决此问题,您可以使用captureScreenshotToString和captureEntirePageScreenshotToString命令,这些命令返回屏幕截图的Base64编码字符串,然后您可以将其解码并保存到testrunner计算机上的磁盘上。”

答案 1 :(得分:0)

我认为这就是你要找的东西。但如果不是,那就试着更具体。

  

captureEntirePageScreenshot(   文件名,kwargs)       将当前窗口画布的全部内容保存到PNG文件。   与此对比   captureScreenshot命令,其中   捕获操作系统的内容   视口(即当前的任何内容)   正在显示器上显示),和   仅在RC中实施。   目前这仅适用于Firefox   在Chrome模式下运行时,在IE中   非HTA使用实验   “Snapsie”实用程序。 Firefox   实施主要是从中借来的   Screengrab! Firefox扩展。   请参阅http://www.screengrab.org   和http://snapsie.sourceforge.net/   详情。

Arguments:

    * filename - the path to the file to persist the screenshot as. No
     

文件扩展名将附加   默认。目录不会   如果它们不存在则创建,并且   异常将被抛出,可能是由   本机代码。           * kwargs - 一个修改截图方式的kwargs字符串   被捕获。例:   “background =#CCFFDD”。目前有效   选项:

      background
          the background CSS for the HTML document. This may be useful
     

设置捕获的屏幕截图   例如,不太理想的布局   绝对定位导致的地方   将画布尺寸计算为   失败,黑色背景曝光   (可能会模糊黑色文字)。

答案 2 :(得分:0)

public static void getSnapShot(WebDriver driver, String event) {
     {
        try {
            File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
            BufferedImage originalImage = ImageIO.read(scrFile);
            //int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
            BufferedImage resizedImage = CommonUtilities.resizeImage(originalImage, IMG_HEIGHT, IMG_WIDTH);
            ImageIO.write(resizedImage, "jpg", new File(path + "/"+ testCaseId + "/img/" + index + ".jpg"));
            Image jpeg = Image.getInstance(path + "/" + testCaseId + "/img/"+ index + ".jpg");
            jpeg.setAlignment(Image.MIDDLE);

            ++index;
        } catch (Exception  e) {
            e.printStackTrace();
        }
    }
}

答案 3 :(得分:0)

我喜欢使用PhantomJS驱动程序来截取屏幕截图。

public class Test {

    public static void main(String[] args) {
        //PhantomJS headless driver
        File file = new File("D:\\Webdriver\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");
        System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
        WebDriver driver = new PhantomJSDriver();

        //Set Size here
        driver.manage().window().setSize(new Dimension(1600,900));

        //To wait until the element get visible or invisible.
        WebDriverWait wait = new WebDriverWait(driver, 25);

        //To access url.
        driver.get("https://www.google.co.in");

        //For wait until the element get visible.
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("lst-ib")));

        File shot=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(shot, new File("D:\\Webdriver\\Capture.jpg"));
    }

}

答案 4 :(得分:0)

它需要chrome网页的完整页面截图。

System.setProperty("webdriver.chrome.driver", "F:\\chromedriver.exe"); 

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);   
String baseUrl = "https://www.google.co.in";

driver.get(baseUrl);        
String fullscreen =Keys.chord(Keys.F11);
driver.findElement(By.cssSelector("body")).sendKeys(fullscreen);

TakesScreenshot scrShot =((TakesScreenshot)driver);  
File SrcFile=scrShot.getScreenshotAs(OutputType.FILE);   
File DestFile=new File("F://test.png");  
FileUtils.copyFile(SrcFile, DestFile);   
driver.close();