首页 > 编程语言 >《手把手教你》系列技巧篇(六十一)-java+ selenium自动化测试 - 截图三剑客 -下篇(详细教程)

《手把手教你》系列技巧篇(六十一)-java+ selenium自动化测试 - 截图三剑客 -下篇(详细教程)

时间:2024-03-31 09:30:23浏览次数:24  
标签:截图 java selenium driver 教程 org import 三剑客

1.简介

按照计划宏哥今天将介绍java+ selenium自动化测试截图操作实现的第三种截图方法,也就是截图的第三剑客 - 截取某个元素(或者目标区域)的图片。在测试的过程中,有时候不需要截取整个屏幕,只需要截取某个元素(或者目标区域)的图片,今天宏哥就来讲解和分享这些内容。

2. 截取某个元素(或者目标区域)的图片

特点:可截取指定元素及目标区域大小截图。

3.测试场景

具体步骤就是:

(1)访问百度首页

(2)点击“设置”中的“搜索设置”

(3)调用截图类截图搜索设置页面

(3)保存截图(搜索设置页面)

4.自动化实战

4.1代码设计

4.2参考代码
package lessons;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

/**
 * @author 北京-宏哥
 * 
 * @公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥公众号,提前解锁更多测试干货)
 * 
 * @《手把手教你》系列技巧篇(六十一)-java+ selenium自动化测试 - 截图三剑客 -下篇(详细教程)
 *
 * @2022年01月18日
 */
public class ElementScreenShot {
    
    private static WebDriver driver;
    public static void main(String[] args) throws Exception {
  
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://www.baidu.com");
        driver.manage().window().maximize();
         
        Thread.sleep(2000);
        WebElement setting = driver.findElement(By.id("s-usersetting-top"));
        Actions actions = new Actions(driver);
        actions.clickAndHold(setting).perform();
        driver.findElement(By.linkText("搜索设置")).click();
        Thread.sleep(1000);
        WebElement xuanxiang = driver.findElement(By.xpath("/html/body/div[1]/div[6]/div"));
        File src = ((ChromeDriver) driver).getScreenshotAs(OutputType.FILE);
        try {

            FileUtils.copyFile(src, new File("D:\\screenshoot\\result.png"));
            FileUtils.copyFile(ElementScreenShot.captureElement(src, xuanxiang), new File("D:\\screenshoot\\test.png"));
            Thread.sleep(2000);
            System.out.println("browser will be close");
            driver.quit();
        } catch (IOException e) {
            e.printStackTrace();
        }
   
    }
    
    public static File captureElement(File screenshot, WebElement element){
        try {
            BufferedImage img = ImageIO.read(screenshot);
            int width = element.getSize().getWidth();
            int height = element.getSize().getHeight();
            //获取指定元素的坐标
            Point point = element.getLocation();
            //从元素左上角坐标开始,按照元素的高宽对img进行裁剪为符合需要的图片
            BufferedImage dest = img.getSubimage(point.getX(), point.getY(), width, height);
            ImageIO.write(dest, "png", screenshot);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return screenshot;
    }

}
4.3运行代码

1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

2.文件保存结果及预览,如下图所示:

 result图片预览

 test图片预览

3.运行代码后电脑端的浏览器的动作,如下小视频所示:

5.小结

这种方法无论你建没有建那个文件夹,如果有会将截图放在文件夹下,如果没有,也会自动创建你代码中的文件夹,然后将截图放入。

 每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

标签:截图,java,selenium,driver,教程,org,import,三剑客
From: https://blog.csdn.net/qq_23827149/article/details/137138930

相关文章

  • Java学习计划和之后的规划
    Java是一种广泛使用的编程语言,以其“一次编写,到处运行”的能力而闻名。对初学者来说,学习Java可以是一个既充满挑战又充满回报的旅程。以下是一份详细的学习计划,可帮助初学者入门并在Java编程世界中稳步前进。##第一阶段:基础入门(1-3个月)###目标-理解Java的基础概念和语法......
  • Java的心脏:深入解析Java虚拟机、进程与线程的精妙互动
    一、定义进程(Process)和线程(Thread)是操作系统中非常基础且重要的概念,它们对于理解程序的执行、资源分配和并发编程至关重要。我将从操作系统(OS)和Java编程语言的角度来详细解释这两个概念。从操作系统的角度进程:定义:进程是操作系统进行资源分配和调度的基本单位。它是一......
  • ssm656基于JAVA的校园失物招领平台的设计与实现
    ......
  • Linux服务器准备java运行环境
    安装JAVA下检查是否安装了JAVAjava-version提示"java:commandnotfound"则表示没有安装,如果安装了会显示JAVA版本信息CentOS安装JAVAsudoyuminstalljava-11-openjdk-devel 安装完成再执行一下:java-version 说明安装成功,没问题设置环境变量设置JAVA_HO......
  • 8分钟搞懂Java中的各种锁
    转载请注明出处❤️作者:测试蔡坨坨原文链接:caituotuo.top/f9fc66cb.html前言你好,我是测试蔡坨坨。在前几篇Redis相关文章中都说到了锁,同时我们在参加设计评审或者codeReview时也会接触到关于加锁的问题。因此,作为测试人员,还是很有必要搞懂相关的锁机制。你是否背了很多关于锁......
  • Java经典垃圾回收器介绍
    先看总结:垃圾回收器分类作用位置使用算法特点适用场景Serial串行新生代复制算法响应速度优先适用于单CPU环境下的Client模式ParNew并行新生代复制算法响应速度优先多CPU环境Server模式下与CMS配合使用Parallel......
  • 【Web应用技术基础】JavaScript(1)——案例:猜数字
    因为不能插入视频,所以给大家一张一张截图的点击“重新开始一局游戏” <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • java9到java17的新特性学习--github新项目
    ......
  • Java反射
    1.反射的基本概念Java的反射(reflection)机制是在运行状态中对于任意一个类,都能够知道这个类的所有属性和方法,反射允许对成员变量、成员方法、构造方法的信息进行编程式访问。这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。反射允许对成员......
  • Java 递归算法系列:建议收藏的 13 个经典问题的代码实现详解
    递归算法题求阶乘(Factorial)斐波那契数列(FibonacciSequence)汉诺塔(TowerofHanoi)遍历树节点(TreeTraversal)数组反转(ArrayReversal)爬楼梯问题(ClimbingStairsProblem)回文数检测(PalindromeChecking)找出数组中的最大值(FindingMaximumValueinanArray)分治算法......