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.