Το αρχείο IO είναι ένα κρίσιμο μέρος κάθε διαδικασίας λογισμικού. Συχνά δημιουργούμε ένα αρχείο, το ανοίγουμε και ενημερώνουμε κάτι ή το διαγράφουμε στους Υπολογιστές μας. Το ίδιο ισχύει και για το Selenium Automation. Χρειαζόμαστε μια διαδικασία χειρισμού αρχείων με το Selenium.
Η Java μας παρέχει διαφορετικές κατηγορίες για τη διαχείριση αρχείων με σελήνιο. Σε αυτό το σεμινάριο, θα μάθουμε πώς μπορούμε να διαβάζουμε και να γράφουμε σε αρχείο Excel με τη βοήθεια του πακέτου Java IO και της βιβλιοθήκης Apache POI.
Apache POI στο Σελήνιο
Το Apache POI στο Σελήνιο είναι ένα ευρέως χρησιμοποιούμενο API για δοκιμές βάσει δεδομένων σεληνίου. Πρόκειται για μια βιβλιοθήκη POI γραμμένη σε Java που δίνει στους χρήστες ένα API για χειρισμό εγγράφων Microsoft όπως .xls και .xlsx. Οι χρήστες μπορούν εύκολα να δημιουργήσουν, να τροποποιήσουν και να διαβάσουν / γράψουν σε αρχεία excel. Το POI σημαίνει "Εφαρμογή κακής συσκότισης".
- Πώς να χειριστείτε το αρχείο excel χρησιμοποιώντας POI (Maven POM Dependency)
- Μαθήματα και διεπαφές στο POI
- Λειτουργία ανάγνωσης / εγγραφής
- Διαβάστε δεδομένα από το αρχείο Excel
- Γράψτε δεδομένα στο αρχείο Excel
- Χειρισμός του Excel χρησιμοποιώντας το JXL API
Εξαγωγή Excel
Πώς να χειριστείτε το αρχείο excel χρησιμοποιώντας POI (Maven POM Dependency)
Για να διαβάσετε και να γράψετε ένα αρχείο Excel στην Java, το Apache παρέχει μια πολύ διάσημη POI βιβλιοθήκης. Αυτή η βιβλιοθήκη είναι αρκετά ικανή να διαβάζει και να γράφει μορφή αρχείου XLS και XLSX του Excel.
Για να διαβάσετε αρχεία XLS , παρέχεται μια εφαρμογή HSSF από τη βιβλιοθήκη POI.
Για να διαβάσετε το XLSX, η εφαρμογή XSSF της βιβλιοθήκης POI θα είναι η επιλογή. Ας μελετήσουμε λεπτομερώς αυτές τις υλοποιήσεις.
Εάν χρησιμοποιείτε το Maven στο έργο σας, η εξάρτηση του Maven θα είναι
<εξάρτηση>org.apache.poi poi 4.1.1
Εναλλακτικά, μπορείτε απλά να κατεβάσετε τα τελευταία βάζα POI από το http://poi.apache.org/download.html και να κατεβάσετε το πιο πρόσφατο αρχείο zip
Όταν κατεβάζετε το αρχείο zip για αυτό το βάζο, πρέπει να το αποσυμπιέσετε και να προσθέσετε όλα αυτά τα βάζα στη διαδρομή κλάσης του έργου σας.
Μαθήματα και διεπαφές σε POI:
Ακολουθεί μια λίστα με διαφορετικές διεπαφές Java και τάξεις σε POI για ανάγνωση αρχείων XLS και XLSX-
- Βιβλίο εργασίας : Τα μαθήματα XSSFWorkbook και HSSFWorkbook εφαρμόζουν αυτήν τη διεπαφή.
- XSSFWorkbook : Είναι μια αναπαράσταση τάξης του αρχείου XLSX.
- Βιβλίο εργασίας HSSF : Είναι μια αναπαράσταση τάξης του αρχείου XLS.
- Φύλλο : Οι κλάσεις XSSFSheet και HSSFSheet εφαρμόζουν αυτήν τη διεπαφή.
- XSSFSheet : Είναι μια κλάση που αντιπροσωπεύει ένα φύλλο σε ένα αρχείο XLSX.
- Φύλλο HSSF : Είναι μια κλάση που αντιπροσωπεύει ένα φύλλο σε ένα αρχείο XLS.
- Row : Οι κλάσεις XSSFRow και HSSFRow εφαρμόζουν αυτήν τη διεπαφή.
- XSSFRow : Είναι μια κλάση που αντιπροσωπεύει μια σειρά στο φύλλο του αρχείου XLSX.
- HSSFRow : Είναι μια κλάση που αντιπροσωπεύει μια σειρά στο φύλλο του αρχείου XLS.
- Κελί : Οι κλάσεις XSSFCell και HSSFCell εφαρμόζουν αυτήν τη διεπαφή.
- XSSFCell : Είναι μια κλάση που αντιπροσωπεύει ένα κελί στη σειρά ενός αρχείου XLSX.
- HSSFCell: Είναι μια τάξη που αντιπροσωπεύει ένα κελί σε μια σειρά αρχείου XLS.
Λειτουργία ανάγνωσης / εγγραφής-
Για παράδειγμα, θα εξετάσουμε παρακάτω δεδομένη μορφή αρχείου Excel
Διαβάστε δεδομένα από το αρχείο Excel
Πλήρες παράδειγμα: Εδώ προσπαθούμε να διαβάσουμε δεδομένα από το Excel στο Selenium:
πακέτο excelExportAndFileIO;εισαγωγή java.io.File;εισαγωγή java.io.FileInputStream;εισαγωγή java.io.IOException;εισαγωγή org.apache.poi.hssf.usermodel.HSSFWorkbook;εισαγωγή org.apache.poi.ss.usermodel.Row;εισαγωγή org.apache.poi.ss.usermodel.Sheet;εισαγωγή org.apache.poi.ss.usermodel.Workbook;εισαγωγή org.apache.poi.xssf.usermodel.XSSFWorkbook;δημόσια τάξη ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) ρίχνει το IOException {// Δημιουργήστε ένα αντικείμενο κλάσης αρχείων για να ανοίξετε το αρχείο xlsxΑρχείο αρχείου = νέο αρχείο (filePath + "\\" + fileName);// Δημιουργήστε ένα αντικείμενο κλάσης FileInputStream για να διαβάσετε το αρχείο excelFileInputStream inputStream = νέο FileInputStream (αρχείο);Βιβλίο εργασίας guru99Workbook = null;// Βρείτε την επέκταση αρχείου χωρίζοντας το όνομα του αρχείου στο substring και παίρνοντας μόνο το όνομα της επέκτασηςString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Ελέγξτε την κατάσταση εάν το αρχείο είναι αρχείο xlsxεάν (fileExtensionName.equals (". xlsx")) {// Εάν είναι αρχείο xlsx τότε δημιουργήστε αντικείμενο κλάσης XSSFWorkbookguru99Workbook = νέο XSSFWorkbook (inputStream);}// Ελέγξτε την κατάσταση εάν το αρχείο είναι αρχείο xlsαλλιώς εάν (fileExtensionName.equals (". xls")) {// Εάν είναι αρχείο xls, δημιουργήστε αντικείμενο της κλάσης HSSFWorkbookguru99Workbook = νέο HSSFWorkbook (inputStream);}// Διαβάστε το φύλλο μέσα στο βιβλίο εργασίας με το όνομά τουSheet guru99Sheet = guru99Workbook.getSheet (φύλλο όνομα);// Βρείτε αριθμό σειρών στο αρχείο excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Δημιουργήστε έναν βρόχο σε όλες τις σειρές του αρχείου excel για να το διαβάσετεγια (int i = 0; iΣημείωση: Δεν χρησιμοποιούμε το πλαίσιο Testng εδώ. Εκτελέστε την τάξη ως Java Application χρησιμοποιώντας τη λειτουργία read excel στο Selenium όπως φαίνεται στο παραπάνω παράδειγμα.
Γράψτε δεδομένα στο αρχείο Excel
Πλήρες παράδειγμα: Εδώ προσπαθούμε να γράψουμε δεδομένα από το αρχείο Excel προσθέτοντας νέα σειρά στο αρχείο Excel
πακέτο excelExportAndFileIO;εισαγωγή java.io.File;εισαγωγή java.io.FileInputStream;εισαγωγή java.io.FileOutputStream;εισαγωγή java.io.IOException;εισαγωγή org.apache.poi.hssf.usermodel.HSSFWorkbook;εισαγωγή org.apache.poi.ss.usermodel.Cell;εισαγωγή org.apache.poi.ss.usermodel.Row;εισαγωγή org.apache.poi.ss.usermodel.Sheet;εισαγωγή org.apache.poi.ss.usermodel.Workbook;εισαγωγή org.apache.poi.xssf.usermodel.XSSFWorkbook;δημόσια τάξη WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) ρίχνει το IOException {// Δημιουργήστε ένα αντικείμενο κλάσης αρχείων για να ανοίξετε το αρχείο xlsxΑρχείο αρχείου = νέο αρχείο (filePath + "\\" + fileName);// Δημιουργήστε ένα αντικείμενο κλάσης FileInputStream για να διαβάσετε το αρχείο excelFileInputStream inputStream = νέο FileInputStream (αρχείο);Βιβλίο εργασίας guru99Workbook = null;// Βρείτε την επέκταση αρχείου χωρίζοντας το όνομα του αρχείου στο substring και παίρνοντας μόνο το όνομα της επέκτασηςString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Ελέγξτε την κατάσταση εάν το αρχείο είναι αρχείο xlsxεάν (fileExtensionName.equals (". xlsx")) {// Εάν είναι αρχείο xlsx τότε δημιουργήστε αντικείμενο κλάσης XSSFWorkbookguru99Workbook = νέο XSSFWorkbook (inputStream);}// Ελέγξτε την κατάσταση εάν το αρχείο είναι αρχείο xlsαλλιώς εάν (fileExtensionName.equals (". xls")) {// Εάν είναι αρχείο xls, δημιουργήστε αντικείμενο κλάσης XSSFWorkbookguru99Workbook = νέο HSSFWorkbook (inputStream);}// Διαβάστε το φύλλο excel ανά όνομα φύλλουΦύλλο φύλλου = guru99Workbook.getSheet (sheetName);// Λάβετε τον τρέχοντα αριθμό σειρών στο αρχείο excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Λάβετε την πρώτη σειρά από το φύλλοΣειρά σειράς = sheet.getRow (0);// Δημιουργήστε μια νέα σειρά και προσθέστε την στο τέλος του φύλλουRow newRow = sheet.createRow (rowCount + 1);// Δημιουργήστε έναν βρόχο πάνω από το κελί της νεοσύστατης γραμμήςγια (int j = 0; jΧειρισμός του Excel χρησιμοποιώντας το JXL API
Το JXL είναι επίσης ένα άλλο διάσημο βάζο που διαβάζει το αρχείο Excel στην Java και γράφει αρχεία. Σήμερα, το POI χρησιμοποιείται στα περισσότερα από τα έργα, αλλά πριν από το POI, το JXL ήταν μόνο Java API για χειρισμό του Excel. Είναι ένα πολύ μικρό και απλό API για ανάγνωση excel στο Σελήνιο.
ΣΥΜΒΟΥΛΕΣ: Η πρότασή μου δεν είναι να χρησιμοποιήσετε το JXL σε οποιοδήποτε νέο έργο, επειδή η βιβλιοθήκη δεν βρίσκεται σε ενεργή ανάπτυξη από το 2010 και η έλλειψη της δυνατότητας σε σύγκριση με το API POI.
Λήψη JXL:
Εάν θέλετε να εργαστείτε με το JXL, μπορείτε να το κατεβάσετε από αυτόν τον σύνδεσμο
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Μπορείτε επίσης να λάβετε παράδειγμα επίδειξης σε αυτό το συμπιεσμένο αρχείο για το JXL.
Μερικά από τα χαρακτηριστικά:
- Το JXL είναι σε θέση να διαβάσει το αρχείο Excel στο Selenium για βιβλίο εργασίας 95, 97, 2000, XP, 2003.
- Μπορούμε να συνεργαστούμε με Αγγλικά, Γαλλικά, Ισπανικά, Γερμανικά.
- Είναι δυνατή η αντιγραφή γραφήματος και εισαγωγής εικόνας στο Excel
Μειονέκτημα:
- Μπορούμε να γράψουμε το Excel 97 και νεότερη έκδοση (δεν υποστηρίζεται η εγγραφή στο Excel 95).
- Το JXL δεν υποστηρίζει μορφή XLSX του αρχείου excel.
- Δημιουργεί υπολογιστικό φύλλο σε μορφή Excel 2000.
Περίληψη:
- Το αρχείο Excel μπορεί να διαβαστεί από τη λειτουργία Java IO. Για αυτό, πρέπει να χρησιμοποιήσουμε το Apache POI Jar .
- Υπάρχουν δύο είδη βιβλίου εργασίας στο αρχείο Excel, τα αρχεία XLSX και XLS .
- Το POI έχει διαφορετικά βιβλία εργασίας διεπαφών, φύλλο, σειρά, κελί.
- Αυτές οι διεπαφές υλοποιούνται από αντίστοιχες τάξεις χειρισμού αρχείων XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) και XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
- Το JXL είναι ένα άλλο API για χειρισμό Excel στο Selenium.
- Το JXL δεν μπορεί να λειτουργήσει με τη μορφή XLSX του excel.