selenium,截图函数

UI自动化测试执行过程中,当遇到检查失败的情况,往往会发现打印的log并不能有效地帮助我们定位问题。我们需要失败时刻的屏幕截图来重现当时的失败场景,进而排查出错原因。

基于这种需求可以使用Selenium的屏幕截图功能。实现代码如下:

import java.io.File;

import java.io.IOException;

import org.apache.commons.io.FileUtils;

import org.apache.commons.lang3.time.DateUtils;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.interactions.Actions;

public static void takeScreeshot(String screenPath, WebDriver chrome){

try {

//指定了OutputType.FILE做为参数传递给getScreenshotAs()方法,其含义是将截取的屏幕以文件形式返回。

File scrFile = ((TakesScreenshot) chrome)

.getScreenshotAs(OutputType.FILE); // 关键代码,执行屏幕截图,默认会把截图保存到temp目录

FileUtils.copyFile(scrFile, new File(screenPath));  //利用FileUtils工具类的copyFile()方法保存getScreenshotAs()返回的文件对象。

} catch (IOException e) {

System.out.println("Screen shot error: " + screenPath);

System.out.println("该错误可以查看截图:"+screenPath);

} catch (Exception e) {

// TODO: handle exception

}

}

public static void takeScreenshot(WebDriver chrome,String imgName) {

String screenName=imgName+DateUtils.MILLIS_PER_DAY+".jpg";

String fileString= "D:\\selenium\\SchoolpalERP_QTP\\image";

if (!(new File(fileString).isDirectory())) {  // 判断是否存在该目录

new File(fileString).mkdir();  // 如果不存在则新建一个目录

}

File dir = new File(fileString);

if (!dir.exists())

dir.mkdirs();

String screenPath = dir.getAbsolutePath() + "\\" + screenName;

takeScreeshot(screenPath, chrome);

}

时间: 2024-10-05 05:09:06

selenium,截图函数的相关文章

selenium截图对比校验方法

/**对比图片进行校验是否成功**/package com.allin.pc; import java.awt.image.BufferedImage;import java.awt.image.DataBuffer;import java.io.File;import java.io.IOException;import java.util.concurrent.TimeUnit; import javax.imageio.ImageIO; import org.apache.commons.

利用opencv实现截图函数

// 矩形截图 bool Screenshot( IplImage* src, IplImage* dst, CvRect rect ) { cvSetImageROI( src, rect ); cvCopy( src, dst, 0 ); cvResetImageROI( src ); return 0; } // 安全重置矩形大小 void SafeResetSizeOfRect( IplImage* src, CvRect& rect ) { rect.x = rect.x < 0

selenium 截图加上时间戳

思路: 1  新建screenshot文件夹,不存在则创建该目录 2  再screenshot文件夹下新建当日日期文件夹,比如20190110:不存在则创建该目录 3  截图保存到当日文件夹,且截图后带有时间戳. 避免用例执行多次,截图被覆盖. import os from datetime import datetime def getscreenshot(driver, filename="页面截图"): """带有时间戳的截图""

selenium - 截图下载图片

from selenium import webdriver from selenium.webdriver import ChromeOptions from time import sleep from PIL import Image import requests class Get_ahth(): """ 将验证码图片下到本地 """ def __init__(self): self.option = ChromeOptions() s

关于selenium截图

没时间深入研究源代码,凭调试解决了非浏览器级别的滚动条截图. 首先,定位到带有滚动条的元素,通过xpath. 其次,获取scrollheight和clientheight. 第三,循环截图,循环截图的过程中可能需要将xpath定位到顶层frame,也就是defaultcontent,不然可能导致画面变形. 第四,通过代码,合并图片.

VBS获得随机数,截图函数

'获取随机数 Public function randonum() Randomize randonum = replace(10000*rnd(),".","a") & "@qq.com" End Function '获取指定范围内的随机数 MAX,MIN RandomizeWScript.Echo Int((MAX-MIN+1)*Rnd)+MIN '截图 Public function capture(part) Dim filena

Python+selenium之窗口截图

自动化用例是由程序去执行,因此有时候打印的错误信息并不明确,如果在脚本执行错误的时候能对当前窗口截图保存,那么通过图片就可以非常直观的看出出错的原因.webdriver提供了截图函数get_screenshot_as_file()来截取当前创窗口. 1 from selenium import webdriver 2 from time import sleep 3 driver = webdriver.Firefox() 4 driver.get("http://www.baidu.com&q

selenium - webdriver - 截图方法get_screenshot_as_file()

WebDriver提供了截图函数get_screenshot_as_file()来截取当前窗口. from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("http://www.baidu.com") driver.find_element_by_id('kw').send_keys('selenium') driver.find_element_by_id

Selenium 2自动化测试实战23(窗口截图)

一.窗口截图 WebDriver提供了截图函数get_screenshot_as_file()来截取当前窗口. # -*- coding: utf-8 -*- from selenium import webdriver from time import sleep from selenium.webdriver.common.keys import Keys driver=webdriver.Chrome() driver.get("http://www.baidu.com") dr