首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过Selenium和Java使用AShot库截取全页屏幕

如何通过Selenium和Java使用AShot库截取全页屏幕
EN

Stack Overflow用户
提问于 2018-08-17 18:16:49
回答 2查看 7.2K关注 0票数 2

我尝试了下面的代码来截取整个页面的截图。但只捕捉到了可见区域,

代码语言:javascript
运行
复制
public void Fullscreen (WebDriver driver) 
{
    try {
        final Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
        final BufferedImage image = screenshot.getImage();
        ImageIO.write(image, "PNG", new File("D:\\" + "AShot_BBC_Entire.png"));           
    } catch(Exception e){
        System.out.println(e.getMessage());
    }
}
EN

回答 2

Stack Overflow用户

发布于 2018-08-17 18:58:58

在使用ashot-1.4.4.jar使用Selenium Java Client v3.14.0、ChromeDriver v2.41、Chrome v68.0时,这里是一个使用ChromeDriver和url https://jquery.com/aShot库在水平和垂直方向上拍摄完整页面截图的示例

  • 代码块:

import org.openqa.selenium.support.ui.ExpectedConditions;import ru.yandex.qatools.ashot.shooting.ShootingStrategies;;import java.io.File;import javax.imageio.ImageIO;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;import"C:\Utility\BrowserDrivers\chromedriver.exe");ashot_CompletePage { public static void main(String[] args)抛出异常{ System.setProperty("god.bless.you",String[]驱动程序选项=新的ChromeOptions();options.addArguments(“启动最大化”);options.addArguments(“禁用信息栏”);options.addArguments(“--禁用扩展”);WebDriver驱动程序=新的ChromeDriver(选项);20).until(ExpectedConditions.titleContains("jQuery"));(“https://jquery.com/");new WebDriverWait(驱动程序,屏幕截图myScreenshot =新建屏幕截图(ImageIO.write(),"PNG",新建文件(”./https://jquery.com/"/WebDriverWait Screenshot.png“);driver.quit();}driver.get

参考文献

您可以在How to take screenshot with Selenium WebDriver中找到详细的讨论

票数 7
EN

Stack Overflow用户

发布于 2020-11-25 19:51:19

我想添加答案,以防您不知道使用的是哪种屏幕。(视网膜或非视网膜)

在这种情况下,您需要查找浏览器窗口的devicePixelRatio:

代码语言:javascript
运行
复制
Object output = ((JavascriptExecutor) webDriver).executeScript("return window.devicePixelRatio");
String value = String.valueOf(output);
float windowDPR = Float.parseFloat(value);

然后您可以使用带伸缩的ShootingStrategy;

代码语言:javascript
运行
复制
ShootingStrategy shootingStrategy = ShootingStrategies.viewportPasting(ShootingStrategies.scaling(windowDPR), 100)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51893208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档