如何通过 Selenium 在网页中捕获 WebElement 的屏幕截图,而不是整个屏幕或页面 [英] How to capture screenshot of a WebElement within a webpage but not the entire screen or page through Selenium

查看:38
本文介绍了如何通过 Selenium 在网页中捕获 WebElement 的屏幕截图,而不是整个屏幕或页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须捕获特定网站图像的屏幕截图.也许这是整个屏幕 20% 的折扣,我使用了下面的代码,它正在捕获整个屏幕.这对我解决问题没有帮助.

WebDriver driver = new FirefoxDriver();driver.get("http://www.google.com/");文件 scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(scrFile, new File("c:\tmp\screenshot.png"));

解决方案

根据您的代码试验 getScreenshotAs() 方法将截取整个页面.

要在特定网页中捕获 WebElement 的屏幕截图,您可以使用导入 ashot-1.4 的 AShot() 方法.4.jar 同时使用 Selenium Java Client v3.14.0ChromeDriver v2.41Chrome v 68.0.p><块引用>

注意:来自 ashot-1.4.4.jarAShot() 方法仅适用于

I have to capture a screenshot of an image of a particular website. Maybe this is 20% off entire screen, I have used below code, it is capturing the entire screen. Which is not helping me to solve the problem.

WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\tmp\screenshot.png"));

解决方案

As per your code trials getScreenshotAs() method will take the screenshot of the entire page.

To capture the screenshot of an WebElement within a particular webpage you can use the AShot() method importing ashot-1.4.4.jar while working with Selenium Java Client v3.14.0, ChromeDriver v2.41, Chrome v 68.0.

Note: AShot() method from ashot-1.4.4.jar works only with jQuery enabled Web Applications.

So as the website http://www.google.com/ is not jQuery enabled AShot() method from ashot-1.4.4.jar won't be able to take the required screenshot.

As an example we will take a snapshot from the website https://jquery.com/.

  • Code Block:

    package aShot;
    
    import java.io.File;
    
    import javax.imageio.ImageIO;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    import ru.yandex.qatools.ashot.AShot;
    import ru.yandex.qatools.ashot.Screenshot;
    
    public class ashot_google_homepage_logo {
    
        public static void main(String[] args) throws Exception {
    
            System.setProperty("god.bless.you", "C:\Utility\BrowserDrivers\chromedriver.exe");
            ChromeOptions options = new ChromeOptions();
            options.addArguments("start-maximized");
            options.addArguments("disable-infobars");
            options.addArguments("--disable-extensions"); 
            WebDriver driver =  new ChromeDriver(options);
            driver.get("https://jquery.com/");
            WebElement myWebElement = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//h3[contains(.,'Lightweight Footprint')]")));
            Screenshot myScreenshot = new AShot().takeScreenshot(driver, myWebElement);
            ImageIO.write(myScreenshot.getImage(),"PNG",new File("./Screenshots/elementScreenshot.png"));
            driver.quit();
        }
    }
    

  • Screenshot:


Reference

You can find a detailed discussion in How to take screenshot with Selenium WebDriver

这篇关于如何通过 Selenium 在网页中捕获 WebElement 的屏幕截图,而不是整个屏幕或页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆