java 使用 seleniumhq selenium Screenshot 实现调用浏览器驱动 截取图片 截取全图 截图 截屏

目录

效果

详细效果 图片太大上传不了

依赖

火狐驱动

示例代码

引入

运行main方法

具体执行任务方法


效果

java 使用 seleniumhq selenium Screenshot 实现调用浏览器驱动 截取图片 截取全图 截图 截屏_第1张图片

 

详细效果 图片太大上传不了

java 使用 seleniumhq selenium Screenshot 实现调用浏览器驱动 截取图片 截取全图 截图 截屏_第2张图片

 

依赖


		
			org.seleniumhq.selenium
			selenium-java
			3.9.1
		
 		
			commons-io
			commons-io
			2.4
		

火狐驱动

稍后更新上去linux 和 win的都带上

https://download.csdn.net/download/weixin_42749765/12628882

示例代码

引入

import java.io.File;
import java.io.IOException;

import org.openqa.selenium.Dimension;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.RemoteWebDriver;

import com.google.common.io.Files;

 

/**
 * Screenshot 实现 浏览器截取页面转图片服务
 * 			
 * 可以实现截取全图能力 
 * 
 * 20200716
 * 
 * @author yushen 
 *
 */
public class ScreenshotHtmlToImg {

}

 

运行main方法

public static void main(String[] args) throws InterruptedException {
		long startMili = System.currentTimeMillis();// 开始时间
		System.out.println("stak execute ready time"+startMili);
		
		//网页地址
		String httpurl = "https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=%E5%A5%B3%E8%A3%85&clk1=8594240c35c5fbb1ee0ae2f1d7ef0c0f&upsid=8594240c35c5fbb1ee0ae2f1d7ef0c0f";
//		String httpurl = "http://www.baidu.com" 
		//文件存放地址
		String fileUrl = "d:/test/000000000000000000092screenfile.png";
		
		Boolean b =  firefoxJT(httpurl,fileUrl);
		
		long endMili = System.currentTimeMillis(); // 结束时间
		System.out.println("stak execute "+b+" total time:" + (endMili - startMili) / 1000 + " s");

	}

 

具体执行任务方法

 
	/**
	 * Screenshot 调用 火狐浏览器  驱动,实现截取页面转图片
	 * 
	 * @param httpUrl //网页地址
	 * @param outputFileUrl //文件存放地址
	 */
	 
	public static Boolean firefoxJT(String httpUrl, String outputFileUrl) {
		try {
			String projectPath = System.getProperty("user.dir");
			// System.out.println("projectPath==" + projectPath);

			// selenium3需要加载firefox的geckodriver.exe
			String path = projectPath + "/firefoxdriver/geckodriver-v0.26.0-win64/geckodriver.exe";
			// 设置firefox的系统属性
			System.setProperty("webdriver.gecko.driver", path);
			WebDriver driver = new FirefoxDriver();
			
			// driver.get("http://www.baidu.com");
			
			
//			Long is = (Long) ((FirefoxDriver) driver).executeScript("return window.document.body.scrollHeight;");
//			System.out.println(is);
			driver.get(httpUrl);
			
			//获取页面内容 高度
			Long scrollHeight = (Long) ((FirefoxDriver) driver).executeScript("return window.document.body.scrollHeight;");
//			System.out.println(is1);
			int scrollHeightInt = scrollHeight.intValue();
			System.out.println("页面高度:"+scrollHeightInt);
			 
			// driver.manage().window().maximize();
			//
			// Dimension s = driver.manage().window().getSize();
			// System.out.println(s.getHeight()+"---"+s.getWidth());
//			 JavascriptExecutor j = (JavascriptExecutor) driver;
//		     j.executeScript("alert(window.scrollY)");
//		     Alert alert = driver.switchTo().alert();
//		        
//		     String text = alert.getText();
//		     System.out.println(text);
//			 
//			JavascriptExecutor jse = (JavascriptExecutor)driver;
//			String heightMax = (String) jse.executeScript("var heightmax ='12312312'; return heightmax;");
//			System.out.println("浏览器高度:"+heightMax);
//			String heightMax = (String) jse.executeScript("var heightmax = window.scrollY; return heightmax;");
//			System.out.println("浏览器高度:"+heightMax);
			 
//			Thread.sleep(5000);
			//TODO 之后研究下如何获取页面总高度 把下边	
			// 设置窗体大小宽高
			driver.manage().window().setSize(new Dimension(1366, scrollHeightInt+500));

			Thread.sleep(3000);
			
			 
			// 等待三秒加载图片
			// 指定了OutputType.FILE做为参数传递给getScreenshotAs()方法,其含义是将截取的屏幕以文件形式返回。
			// driver需要强制转换为RemoteWebDriver对象,可以通过eclipse提示进行处理
			File scrFile = ((RemoteWebDriver) driver).getScreenshotAs(OutputType.FILE);
			try {
				// 利用FileUtils工具类的copy()方法保存getScreenshotAs()返回的文件对象。
				// 看到网上有使用File.copyFile()方法,我这里测试的结果需要使用copy()方法
				Files.copy(scrFile, new File(outputFileUrl));
			} catch (IOException e) {
				// 异常处理
				e.printStackTrace();
				System.out.println(e.toString());
			}
			driver.quit();
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println(e.toString());
			return false;
		}
	}


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ok   持续更新

 

 

 

 

你可能感兴趣的:(java 使用 seleniumhq selenium Screenshot 实现调用浏览器驱动 截取图片 截取全图 截图 截屏)