谁能告诉我如何使用Java Selenium捕获网页?举个例子......
答案 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();