Java ve Selenium Webriver'ı Kullanarak Ekran Görüntüsü Alma ve MSSQL Veritabanına Kaydetme



Bu Selenium Webdriver kullanarak Ekran görüntüsü almak ve MS SQL Veritabanında kaydetmek içindir. Resim, tarayıcı ismi, tarayıcı versiyonu, sıra numarası ve senaryo adıyla eklenen resim adıyla veritabanında saklanıyor. Bu kod Chrome, Firefox, Internet Explorer ve Safari ile desteklenir.

İsterseniz resmi yerel bir klasöre kaydetmek için 63-70 satırı arasında bir seçenek daha vardır. Yerel sistemde bir klasör ayarlayabilirsiniz; bu, resmi MSSQL Veritabanında png biçiminde ve bayt biçiminde belirttiğiniz klasöre kaydeder.

Ekran görüntüsünü alın ve Java ve Selenium Webriver'ı kullanarak MSSQL Veritabanına kaydedin

paket com.main;

ithalat java.awt.image.BufferedImage;

java.io.File dosyasını içe aktarın;

java.io.FileInputStream öğesini içe aktarın;

java.io.IOException öğesini içe aktarın;

java.io.InputStream öğesini içe aktarın;

java.sql dosyasını girin.

import java.sql.DriverManager;

ithalat java.sql.PreparedStatement;

java.sql.ResultSet alma;

java.sql.SQLException alma;

java.util.Properties dosyasını içe aktarın;

java.util.concurrent.TimeUnit dosyasını içe aktarın;

javax.imageio.ImageIO dosyasını içe aktarın;

ithal org.openqa.selenium.Capabilities;

ithalat org.openqa.selenium.JavascriptExecutor;

ithalat org.openqa.selenium.OutputType;

ithalat org.openqa.selenium.TakesScreenshot;

ithalat org.openqa.selenium.WebDriver;

ithalat org.openqa.selenium.remote.RemoteWebDriver;

genel sınıf ImageSave {

özel statik int imageSeqNo = 0;

özel statik Dize scenName;

özel statik WebDriver browserDriver;

özel statik int browserWidth;

özel statik int browserHeight;

kamu statik dize tarayıcı;

genel statik WebDriver sürücüsü;

genel statik int getBrowserWidth () {

browserWidth döndür;

}

genel statik int getBrowserHeight () {

browser_eight döndürmek;

}

public static Dize getScenName () {

scen_adı döndür;

}

genel statik int getImageSeqNo () {

görüntü döndürürSeqNo;

}

public static void main (String [] args), Exception {komutunu atar.

// BrowserDriver.getCurrentDriver ();

}

public static void addScreenshot (WebDriver driver), IOException'ı atar,

ClassNotFoundException, InterruptedException {

bayt [] scrByte = getScreenShotBytes (sürücü);

tarayıcı = getBrowserAndVersion ();

Dize scenarioName = getScenName ();

String imageName = scenarioName + ”” + tarayıcı + ””

+ System.currentTimeMillis () + “.png”;

Dosya scrFile = getScreenShotFile (driver);

String screenWidthHeight = getImageWidthHeight (scrFile);

// ekran görüntüsünü yerel sisteme kaydetmek istiyorsanız, aşağıdaki satırı etkinleştirin

// FileUtils.copyFile (scrFile, new File (“C: // ekran görüntüsü //” + imageName));

insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,

tarayıcı);

Thread.sleep (1000);

}

public static Dize getImageWidthHeight (Dosya imageFile), IOException'ı {

BufferedImage bimg = ImageIO.read (imageFile);

int imageWidth = bimg.getWidth ();

int imageHeight = bimg.getHeight ();

if (imageWidth! = 0) {

imageWidth + “x” + imageHeight döndür;

} Başka {

"FullScreenx" döndürün + imageHeight;

}

}

genel statik Dosya getScreenShotFile (WebDriver driver) {

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

return ((TakesScreenshot) sürücüsü) .getScreenshotAs (OutputType.FILE);

}

genel statik bayt [] getScreenShotBytes (WebDriver driver) {

return ((TakesScreenshot) sürücüsü) .getScreenshotAs (OutputType.BYTES);

}

genel statik boşluk insertImageDB (bayt [] imageByte, String scenName,

String imageName, String screenWidthHeight, String tarayıcı)

ClassNotFoundException'ı attı

Özellikler dbProp = new Properties ();

InputStream dbPropInput = null;

SonuçSet rs = null;

Hazırlanan Statü ps = null;

Bağlantı con = null;

// setImageSeqNo (getImageSeqNo () + 1);

int seqNo = getImageSeqNo ();

System.out.println (scenName + ”—-” + tarayıcı + ”—-”

+ screenWidthHeight + ”—- Shot Numarası:” + seqNo);

Deneyin {

String propPath = “. \ Src \ test \ resources \ props \ dbConnect.properties”;

dbPropInput = yeni FileInputStream (propPath);

dbProp.load (dbPropInput); // özellik dosyasını yükle

String dbDriver = (dbProp.getProperty (“dbDriver”));

String 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 = yeni java.sql.Timestamp (date.getTime ());

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

ps.setEscapeProcessing (doğru);

ps.setQueryTimeout (90); // zaman aşımı değeri daha sonra devre dışı kalabilir, resim

ps.setString (1, “Proje”);

ps.setString (2, scenName);

ps.setString (3, tarayıcı);

ps.setString (4, ekran Genişliği Yüksekliği);

ps.setTimestamp (5, sqlTimestamp);

ps.setInt (6, seqNo);

ps.setString (7, imageName);

ps.setBytes (8, imageByte);

// veri tabanı güncellemesini devre dışı bırakmak için satırın altındaki yorum

ps.executeUpdate ();

} yakalamak (IOException e) {

e.printStackTrace ();

} yakalamak (SQLException e) {

e.printStackTrace ();

} en sonunda {

Deneyin {

if (dbPropInput! = null)

dbPropInput.close ();

if (rs! = null)

rs.Close ();

if (ps! = null)

ps.close ();

if (con! = null)

con.close ();

} catch (İstisna e) {

e.printStackTrace ();

}

}

}

public static Dize getBrowserAndVersion () {

String browser_version = null;

Capabilities cap = ((RemoteWebDriver) sürücüsü) .getCapabilities ();

Dize browsername = cap.getBrowserName ();

// IE Sürüm numarasını bulmak için bu blok

if (“internet explorer” .equalsIgnoreCase (tarayıcı adı)) {

String uAgent = (String) ((JavascriptExecutor) sürücüsü)

.executeScript (“return navigator.userAgent;”);

System.out.println (uAgent);

// u8 IE8 için "MSIE 8.0 Windows" olarak geri dönün

if (uAgent.contains (“MSIE”) & & uAgent.contains (“Windows”)) {

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

uAgent.indexOf (“Windows”) - 2);

} else eğer (uAgent.contains (“Trident / 7.0”)) {

browser_version = “11.0”;

} Başka {

browser_version = “00”;

}

} Başka {

// Firefox ve Chrome için tarayıcı sürümü

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

}

String browserversion = browser_version.substring (0,

browser_version.indexOf ( “”));

String bVersion = String.format (“% 02d”, Integer.parseInt (göz atma));

return ((tarayıcı adı) + “_” + bVersion);

}

public static Dize browserNameConvert (Dize tarayıcı_adı) {

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

tarayıcı_adı, “gezgin”)) {

“IE” döndürür;

} else eğer (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

tarayıcı_adı, “firefox”)) {

“FF” döndür;

} else eğer (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

tarayıcı_adı, “chrome”)) {

“CH” döndür;

} else eğer (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

tarayıcı_adı, “safari”)) {

“SF” döndür;

} Başka {

“NA” döndürür;

}

}

}

Kullanıcı kimlik bilgileri ve Mağaza Prosedürü ile birlikte MSSQL Veritabanı Bağlantısı Özellik dosyası

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

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = jdbc: sqlserver: // YOURSERVERURL; veritabanı = databasename; user = KULLANICI ADI; parola = ŞİFRE

SPSql = {arama STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}

Veritabanında saklamak için, bu örnekte zaten oluşturulmuş olan mağaza prosedürü ve veritabanı bağlantısı ve mağaza prosedürü için tüm bu veriler özellik dosyasında listelenmiştir.

Tarayıcı adı FF (Firefox), CH (Chrome) vb. Gibi 2 karakter kısa forma dönüştürür. Bu aynı zamanda program aracılığıyla Internet Explorer sürüm numarası da dahil olmak üzere tarayıcı sürümünü bulabilir. Bu komut dosyası, Internet Explorer 8, 9, 10, 11 sürümlerini destekler.

Önceki Makale

Uzakta yürürken Windows ile Android PC otomatik olarak nasıl kilitlenir?

Uzakta yürürken Windows ile Android PC otomatik olarak nasıl kilitlenir?

Windows 10 Oluşturucu Güncelleştirmesi, PC'nizi daha üretken ve daha sorunsuz hale getiren tamamen yeni özelliklerle birlikte geldi. Beklenen Dinamik Kilitleme özelliği, uzakta olduğunuzda PC'nizi otomatik olarak kilitlemenizi sağlar. Bu özellik, bir Bluetooth aygıtını Windows PC ile eşleştirerek Windows PC'nize ekleyebilirsiniz. İşletim siste...

Sonraki Makale

İPhone ve Android'de WhatsApp Veri Kullanımını Düşürmek için 5 Çözüm

İPhone ve Android'de WhatsApp Veri Kullanımını Düşürmek için 5 Çözüm

WhatsApp, medya için çok fazla desteğe sahip mükemmel bir uygulama olsa da, mobil verilerinizi hızla tüketebilir. Özellikle video gönderip alırken, hücresel verilerdeki mesajlar ve çağrılar birkaç gün içinde aylık kotanızı tüketebilir. WhatsApp Düşük Veri Kullanımı için alternatif çözüm, WhatsApp'ınızı yalnızca WiFi ağında açmaktır. Bununla birlikte, bu çözüm, özellik...