selenium - 如何使用 Selenium Webdriver 捕获特定元素而不是整个页面的屏幕截图?

标签 selenium selenium-webdriver screenshot

目前我正在尝试使用 Selenium WebDriver 捕获屏幕截图。但我只能获取整个页面的屏幕截图。然而,我想要的只是捕获页面的一部分,或者可能只是基于 ID 或任何特定元素定位器的特定元素。 (例如,我想捕获图像id =“蝴蝶”的图片)

有什么方法可以捕获所选项目或元素的屏幕截图吗?

最佳答案

我们可以通过裁剪整个页面截图来获取元素截图,如下所示:

driver.get("http://www.google.com");
WebElement ele = driver.findElement(By.id("hplogo"));

// 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 = ele.getLocation();

// Get width and height of the element
int eleWidth = ele.getSize().getWidth();
int eleHeight = ele.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("C:\\images\\GoogleLogo_screenshot.png");
FileUtils.copyFile(screenshot, screenshotLocation);

关于selenium - 如何使用 Selenium Webdriver 捕获特定元素而不是整个页面的屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13832322/

相关文章:

java - 在不使用 javascript 执行程序的情况下,使用 Selenium java WebDriver 单击隐藏元素?

python-3.x - 如何使用 Selenium 和 Python 引用 HTML 中的文本来定位元素

php - PHPUnit Selenium 测试用例的代码覆盖率

c# - 查找元素返回空字符串..using XPath contains,Text()

java - 在 selenium webdriver 中动态切换帧

ruby - 获取测试自动化屏幕截图时的字符编码问题(损坏的字符)

java - 使用 servlet 和 jsp 截取屏幕截图并将其保存在服务器上

python - 在 Python 中自动化 Selenium 测试

python-2.7 - 如何查看“屏幕截图:可通过屏幕获取”?

iphone - 如何在您的 App 中截取屏幕截图并发布到 facebook 上?