Java 및 Selenium Webriver를 사용하여 스크린 샷을 저장하고 MSSQL 데이터베이스에 저장하는 방법



이것은 Selenium Webdriver를 사용하여 Screenshot을 가져 와서 MS SQL 데이터베이스에 저장하는 것입니다. 이미지는 이미지 이름에 브라우저 이름, 브라우저 버전, 시퀀스 번호 및 시나리오 이름이 추가 된 데이터베이스에 저장됩니다. 이 코드는 Chrome, Firefox, Internet Explorer 및 Safari에서 지원됩니다.

원하는 경우 그림을 로컬 폴더에 저장하기 위해 63-70 줄 사이에 하나 이상의 옵션이 있습니다. 로컬 시스템에 폴더를 설정할 수 있으며 MSSQL 데이터베이스에서 png 형식 및 바이트 형식으로 지정한 폴더에 그림을 저장합니다.

Java 및 Selenium Webriver를 사용하여 스크린 샷 찍고 MSSQL 데이터베이스에 저장하십시오.

패키지 com.main;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Properties;

import java.util.concurrent.TimeUnit;

import javax.imageio.ImageIO;

import org.openqa.selenium.Capabilities;

import org.openqa.selenium.JavascriptExecutor;

import org.openqa.selenium.OutputType;

org.openqa.selenium.TakesScreenshot 가져 오기

org.openqa.selenium.WebDriver 가져 오기

import org.openqa.selenium.remote.RemoteWebDriver;

공용 클래스 ImageSave {

개인 정적 int imageSeqNo = 0;

private static String scenName;

개인 정적 WebDriver browserDriver;

개인 정적 int browserWidth;

private static int browserHeight;

public static String 브라우저;

공개 정적 WebDriver 드라이버;

공공 정적 int getBrowserWidth () {

return browserWidth;

}

공공 정적 int getBrowserHeight () {

return browserHeight;

}

공공 정적 문자열 getScenName () {

return sceneName;

}

공공 정적 int getImageSeqNo () {

return imageSeqNo;

}

public static void main (String [] args) 예외를 throw합니다.

// BrowserDriver.getCurrentDriver ();

}

public static void addScreenshot (WebDriver 드라이버)는 IOException을 던집니다.

ClassNotFoundException, InterruptedException {

바이트 [] scrByte = getScreenShotBytes (드라이버);

browser = getBrowserAndVersion ();

String scenarioName = getScenName ();

문자열 imageName = scenarioName + ""+ 브라우저 + ""

+ System.currentTimeMillis () + ".png";

파일 scrFile = getScreenShotFile (드라이버);

String screenWidthHeight = getImageWidthHeight (scrFile);

// 로컬 시스템에서 스크린 샷 이미지를 저장하려면 아래 라인을 활성화하십시오

// FileUtils.copyFile (scrFile, 새 파일 ( "C : // screenshot //"+ imageName));

insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,

브라우저);

Thread.sleep (1000);

}

public static String getImageWidthHeight (File imageFile) throws IOException {

BufferedImage bimg = ImageIO.read (imageFile);

int imageWidth = bimg.getWidth ();

int imageHeight = bimg.getHeight ();

if (imageWidth! = 0) {

반환 imageWidth + "x"+ imageHeight;

} else {

"FullScreenx"+ imageHeight를 반환합니다.

}

}

공공 정적 파일 getScreenShotFile (WebDriver 드라이버) {

// WebDriver driverA = new Augmenter (). augment (driver);

return ((TakesScreenshot) 드라이버) .getScreenshotAs (OutputType.FILE);

}

public static byte [] getScreenShotBytes (WebDriver 드라이버) {

return ((TakesScreenshot) 드라이버) .getScreenshotAs (OutputType.BYTES);

}

공공 정적 무효의 insertImageDB (byte [] imageByte, 문자열 scenName,

문자열 imageName, 문자열 screenWidthHeight, 문자열 브라우저)

throws ClassNotFoundException {

속성 dbProp = 새 Properties ();

InputStream dbPropInput = null;

ResultSet rs = null;

PreparedStatement ps = null;

연결 con = null;

// setImageSeqNo (getImageSeqNo () + 1);

int seqNo = getImageSeqNo ();

System.out.println (scenName + "-"+ 브라우저 + "-"

+ screenWidthHeight + "- 샷 번호 :"+ seqNo);

시도 {

문자열 propPath = ". \ src \ test \ resources \ props \ dbConnect.properties";

dbPropInput = 새 FileInputStream (propPath);

dbProp.load (dbPropInput); // 속성 파일을로드합니다.

문자열 dbDriver = (dbProp.getProperty ( "dbDriver"));

문자열 dbURL = (dbProp.getProperty ( "dbURL"));

String stPro = (dbProp.getProperty ( "SPSql"));

Class.forName (dbDriver);

con = DriverManager.getConnection (dbURL);

ps = con.prepareStatement (stPro);

java.util.Date date = new java.util.Date ();

java.sql.Timestamp sqlTimestamp = 새로운 java.sql.Timestamp (date.getTime ());

System.out.println ( "Image Timestamp ="+ sqlTimestamp);

ps.setEscapeProcessing (true);

ps.setQueryTimeout (90); // 타임 아웃 값은 나중에 비활성화 될 수 있습니다.

ps.setString (1, "Project");

ps.setString (2, scenName);

ps.setString (3, browser);

ps.setString (4, screenWidthHeight);

ps.setTimestamp (5, sqlTimestamp);

ps.setInt (6, seqNo);

ps.setString (7, imageName);

ps.setBytes (8, imageByte);

// 데이터베이스 아래쪽에 주석을 달아 데이터베이스 업데이트를 비활성화합니다.

ps.executeUpdate ();

} catch (IOException e) {

e.printStackTrace ();

} catch (SQLException e) {

e.printStackTrace ();

} finally {

시도 {

if (dbPropInput! = null)

dbPropInput.close ();

if (rs! = null)

rs.close ();

if (ps! = null)

ps.close ();

if (con! = null)

con.close ();

} catch (예외 e) {

e.printStackTrace ();

}

}

}

공공 정적 문자열 getBrowserAndVersion () {

String browser_version = null;

기능 cap = ((RemoteWebDriver) 드라이버) .getCapabilities ();

String browsername = cap.getBrowserName ();

//이 블록은 IE 버전 번호를 확인합니다.

if ( "Internet Explorer".equalsIgnoreCase (browsername)) {

String uAgent = (String) ((JavascriptExecutor) 드라이버)

.executeScript ( "return navigator.userAgent;");

System.out.println (uAgent);

// uAgent는 IE8 용 "MSIE 8.0 Windows"로 반환합니다.

if (uAgent.contains ( "MSIE") && uAgent.contains ( "Windows")) {

browser_version = uAgent.substring (uAgent.indexOf ( "MSIE") + 5,

uAgent.indexOf ( "Windows") - 2);

} else if (uAgent.contains ( "Trident / 7.0")) {

browser_version = "11.0";

} else {

browser_version = "00";

}

} else {

// Firefox 및 Chrome 용 브라우저 버전

browser_version = cap.getVersion (); // .split ( ".") [0];

}

문자열 browserversion = browser_version.substring (0,

browser_version.indexOf ( ".")));

String bVersion = String.format ( "% 02d", Integer.parseInt (browserversion));

return ((browsername) + "_"+ bVersion);

}

공공 정적 문자열 browserNameConvert (문자열 browser_name) {

if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "explorer")) {

return "IE";

} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "firefox")) {

"FF"를 반환;

} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "chrome")) {

"CH"를 반환;

} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "safari")) {

"SF"를 반환;

} else {

NA "를 반환하십시오.

}

}

}

사용자 자격 증명 및 저장 프로 시저가있는 MSSQL 데이터베이스 연결 속성 파일

########### dbConnect.properties ############

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = jdbc : sqlserver : // YOURSERVERURL; 데이터베이스 = 데이터베이스, 사용자 = 사용자 이름, 암호 = 암호

SPSql = {STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)} 호출

데이터베이스에 저장하려면이 예제에서 이미 작성된 저장 프로시 듀어와 데이터베이스 연결 및 저장 프로시 듀어에 대한 모든 데이터가 특성 파일에 나열되어 있어야합니다.

FF (Firefox), CH (Chrome) 등 2 자 형식의 짧은 형식으로 변환하는 브라우저 이름. Internet Explorer 버전 번호를 포함하여 프로그래밍 방식으로 브라우저 버전을 찾을 수도 있습니다. 이 스크립트는 Internet Explorer 버전 8, 9, 10, 11를 지원합니다.

이전 기사

Microsoft Surface Pro 3 대 Apple iPad Air 대 Dell Venue Pro 8

Microsoft Surface Pro 3 대 Apple iPad Air 대 Dell Venue Pro 8

Microsoft는 2014 년 5 월 20 일 개최되는 행사에서 Surface 3 Pro라는 최신 표면 장치 장치를 공개했습니다. Microsoft는이 장치가 랩탑을 대체 할 수있는 게임 체인저가 될 것이라고 주장하고 있습니다. 새로운 Surface Pro 3는 뛰어난 디자인 품질과 더 나은 디자인의 터치 및 유형 커버 및 표면 펜과 함께 프리미엄 장치로 사용할 수 있습니다. 터치 및 유형 커버의 사용은이 소형 폼 팩터가있는 노트북처럼 똑같이 생산적인 강력한 노트북과 비슷합니다. Microsoft는 새로운 Surface 3 Pro를 Apple iPad Air 및 iOS 에코 시스템의 경쟁자로 목표로 삼고 있습니다. 이 장치들 사이의 사양 비교는 저렴한 Windows Vista 8.1 Ven Venue 8 Pro와 함께 볼 수 있습니다. Microsoft Surfa...

다음 기사

Google 검색 엔진을 사용하여 MP3 곡 검색 및 다운로드

Google 검색 엔진을 사용하여 MP3 곡 검색 및 다운로드

Google 및 Bing과 같은 검색 엔진을 사용하면 MP3 및 기타 노래를 검색하고 브라우저에서 직접 컴퓨터로 노래를 다운로드 할 수 있습니다. 로그인 또는 웹 계정이 필요하지 않지만이 MP3 다운로드 해결 방법은 저작권이없는 노래 만 지원합니다. 이제 검색 엔진에서 노래를 검색하는 방법은 무엇입니까? 최상의 결과를 얻으려면 노래를 검색 할 수있는 형식이 있습니다. 그러면 사용자가 노래 디렉토리로 이동하고 노래를 컴퓨터로 다운로드 할 수 있습니다. 그렇다면 검색 엔진에서 MP3 음악을 다운로드하는 데 가장 적합한 형식 또는 검색 키는 무엇입니까? 이 MP...