How to capture screenshot of a WebElement within a webpage but not the entire screen or page through Selenium(如何通过 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.0、ChromeDriver v2.41、Chrome v 68.0.p><块引用>
注意:来自 ashot-1.4.4.jar 的 AShot()
方法仅适用于
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 的屏幕截图,而不是整个屏幕或页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何通过 Selenium 在网页中捕获 WebElement 的屏幕截图,而不是整个屏幕或页面
基础教程推荐
- 降序排序:Java Map 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01