Πώς να εισαγάγετε, να διαβάσετε, να αλλάξετε δεδομένα από το EXCEL στο QTP/UFT

⚡ Έξυπνη Σύνοψη

Εισαγωγή, ανάγνωση και αλλαγή δεδομένων από το Excel στο QTP/UFT βασίζεται στο ενσωματωμένο αντικείμενο DataTable, το οποίο φορτώνει ένα βιβλίο εργασίας στον πίνακα δεδομένων χρόνου εκτέλεσης, έτσι ώστε κάθε σενάριο αυτοματοποίησης να μπορεί να οδηγεί βήματα δοκιμής από γραμμές υπολογιστικού φύλλου.

  • 📥 Εισαγωγή: Το DataTable.Import φορτώνει ένα ολόκληρο βιβλίο εργασίας, ενώ το DataTable.ImportSheet τραβάει ένα επώνυμο φύλλο σε ένα επιλεγμένο φύλλο προορισμού.
  • 🗂️ Κανόνας κεφαλίδας: Η πρώτη γραμμή του υπολογιστικού φύλλου γίνεται τα ονόματα των στηλών, επομένως δομήστε το φύλλο πριν από την εκτέλεση της εισαγωγής.
  • 🔢 Αριθμός σειρών: Η συνάρτηση DataTable.GetSheet(1).GetRowCount επιστρέφει τον αριθμό των γραμμών δεδομένων και εξαιρεί τη γραμμή κεφαλίδας.
  • 🎯 Δείκτης γραμμής: Καλέστε την συνάρτηση DataTable.SetCurrentRow πριν από κάθε ανάγνωση, έτσι ώστε η συνάρτηση DataTable.Value να επιστρέφει το κελί που αναμένετε.
  • Γράψε πίσω: Η αντιστοίχιση στο DataTable.Value αλλάζει μόνο ένα κελί στη μνήμη. Το DataTable.Export αποθηκεύει το φύλλο στο δίσκο.
  • 🧩 Επιλογή COM: Δημιουργήστε ένα αντικείμενο Excel.Application όταν απαιτείται μορφοποίηση, τύποι ή πολλά ανοιχτά βιβλία εργασίας.
  • ⚠️ Καθαρισμός: Να καλείτε πάντα την εντολή Quit και να αποδεσμεύετε αντικείμενα, διαφορετικά το EXCEL.EXE παραμένει ενσωματωμένο και κλειδώνει το αρχείο.

Πώς να εισαγάγετε, να διαβάσετε και να αλλάξετε δεδομένα από το Excel στο QTP/UFT

Τα υπολογιστικά φύλλα παραμένουν το πιο συνηθισμένο μέρος όπου οι δοκιμαστές διατηρούν τις τιμές εισόδου, τα αναμενόμενα αποτελέσματα και τις ρυθμίσεις περιβάλλοντος. QTP, τώρα πωλείται ως OpenText UFT Ένα μετά τη μετάβαση του προϊόντος από την HP στην Micro Focus και στη συνέχεια στην OpenText, διαβάζει αυτά τα υπολογιστικά φύλλα μέσω του αντικειμένου DataTable. Οι παρακάτω ενότητες δείχνουν τις ακριβείς εντολές που χρησιμοποιούνται για την εισαγωγή ενός βιβλίου εργασίας, την καταμέτρηση των γραμμών του, την ανάγνωση μεμονωμένων κελιών, την αλλαγή τιμών και την επανεγγραφή του φύλλου στον δίσκο.

Βήματα για εισαγωγή, ανάγνωση, αλλαγή δεδομένων από το EXCEL

Σκεφτείτε ότι θέλετε να εισαγάγετε τα ακόλουθα Πωλήσεις.xls βιβλίο εργασίας στο τεστ σας.

Το βιβλίο εργασίας πηγαίου κώδικα Sales.xls άνοιξε στο Excel πριν από την εισαγωγή στο UFT

Μόλις εισαχθεί το αρχείο στο UFT, η επάνω γραμμή γίνεται η κεφαλίδα της στήλης, επομένως δομήστε τα δεδομένα σας ανάλογα. Οτιδήποτε στη γραμμή 1 αντιμετωπίζεται ως όνομα παραμέτρου και όχι ως δεδομένα δοκιμής και κάθε υπόλοιπη γραμμή μετριέται ως γραμμή δεδομένων.

Η σύνταξη για την εισαγωγή ενός ολόκληρου αρχείου Excel φαίνεται παρακάτω.

DataTable.Import(FileName)

Στην περίπτωσή μας, η εντολή γίνεται η ακόλουθη. Η VBScript δεν χρειάζεται παρενθέσεις όταν μια μέθοδος καλείται ως εντολή, επομένως εδώ χρησιμοποιείται η απλή μορφή.

DataTable.Import "D:\Automation\Sales.xls"

Μετά την εκτέλεση, οι εισαγόμενες γραμμές εμφανίζονται στο παράθυρο Δεδομένα κατά τον χρόνο εκτέλεσης ακριβώς όπως είχαν διαταχθεί στο βιβλίο εργασίας.

Δεδομένα εισαγόμενων πωλήσεων που εμφανίζονται στο UFT παράθυρο Πίνακα Δεδομένων κατά τον χρόνο εκτέλεσης

Η σύνταξη για την εισαγωγή ενός συγκεκριμένου φύλλου εμφανίζεται στη συνέχεια. SheetSource είναι το φύλλο μέσα στο βιβλίο εργασίας και SheetDest είναι το φύλλο προορισμού στον πίνακα δεδομένων χρόνου εκτέλεσης.

DataTable.ImportSheet FileName, SheetSource, SheetDest

Χρησιμοποιήστε το GetRowCount μέθοδος για να λάβετε τον αριθμό των γραμμών δεδομένων σε ένα φύλλο. Κάθε πρόταση πρέπει να βρίσκεται σε ξεχωριστή γραμμή.

DataTable.Import "D:\Automation\Sales.xls"
row = DataTable.GetSheet(1).GetRowCount
MsgBox row

Το πλαίσιο μηνύματος που εμφανίζεται αναφέρει το σύνολο γραμμών για το εισαγόμενο φύλλο.

MsgBox εμφάνιση του αποτελέσματος GetRowCount για το εισαγόμενο φύλλο πωλήσεων

Για να μετακινήσετε τον δείκτη σε μια συγκεκριμένη γραμμή, χρησιμοποιήστε το ΟρισμόςΤρέχουσαςΓραμμής μέθοδος. Το δεύτερο όρισμα του DataTable.Value είναι ο αριθμός φύλλου, όχι ο αριθμός γραμμής, γι' αυτό και ο δείκτης γραμμής πρέπει να μετακινηθεί ξεχωριστά.

DataTable.Import "D:\Automation\Sales.xls"

' In the code below, 1 is the sheet number
DataTable.SetCurrentRow 1
Row1 = DataTable.Value("Year", 1)

DataTable.SetCurrentRow 2
Row2 = DataTable.Value("Year", 1)

MsgBox "Year Row 1 = " & Row1 & "    Year Row 2 = " & Row2

Και οι δύο τιμές διαβάζονται από την ίδια στήλη αλλά από δύο διαφορετικές γραμμές και το πλαίσιο μηνύματος τις εκτυπώνει η μία δίπλα στην άλλη.

MsgBox συγκρίνοντας την τιμή Έτους της γραμμής 1 και της γραμμής 2 του πίνακα δεδομένων

Χρησιμοποιήστε το αξία μέθοδος στα αριστερά μιας ανάθεσης για να αλλάξετε δεδομένα στο εισαγόμενο φύλλο. Η αλλαγή παραμένει στη μνήμη μέχρι να την καλέσετε εξαγωγή, η οποία γράφει τον πίνακα δεδομένων χρόνου εκτέλεσης πίσω σε ένα αρχείο Excel.

DataTable.SetCurrentRow 1
DataTable.Value("Year", 1) = 2026
DataTable.Export "D:\Automation\Sales_Updated.xls"

Το επεξεργασμένο κελί είναι ορατό στο παράθυρο Δεδομένα κατά τον χρόνο εκτέλεσης αμέσως μετά την εκτέλεση της ανάθεσης.

Πίνακας δεδομένων χρόνου εκτέλεσης που εμφανίζει ένα κελί ενημερωμένο μέσω της μεθόδου DataTable.Value

Το άνοιγμα του εξαγόμενου βιβλίου εργασίας επιβεβαιώνει ότι οι τροποποιημένες τιμές αποθηκεύτηκαν στο δίσκο αντί να διατηρηθούν μόνο για τη διάρκεια της εκτέλεσης.

Το εξαγόμενο αρχείο Excel άνοιξε στο Excel και εμφανίζει τις τροποποιημένες τιμές που αποθηκεύτηκαν από το DataTable.Export

💡 Συμβουλές: Εξαγωγή σε διαφορετικό όνομα αρχείου από αυτό που εισαγάγατε. Η εγγραφή στο ίδιο ανοιχτό βιβλίο εργασίας είναι ο πιο γρήγορος τρόπος για να ενεργοποιήσετε μια παραβίαση κοινής χρήσης και να χάσετε την εκτέλεση.

Πώς να διαβάσετε, να αλλάξετε και να εξαγάγετε δεδομένα Excel: Ένα πλήρες παράδειγμα

Τα παραπάνω αποσπάσματα παρουσιάζουν μία μέθοδο. Σε μια πραγματική δοκιμή που βασίζεται σε δεδομένα, συνδυάζονται σε έναν μόνο βρόχο που διαχειρίζεται κάθε γραμμή, υπολογίζει κάτι, αποθηκεύει το αποτέλεσμα και εξάγει το φύλλο. Ας υποθέσουμε ότι το βιβλίο εργασίας Πωλήσεις.xls περιέχει τις ακόλουθες τέσσερις στήλες και τρεις γραμμές δεδομένων.

Έτος Περιοχή Μονάδες Τιμή
2023 Ανατολή 120 25
2024 Ανατολή 150 25
2025 δυτικά 200 30

Το παρακάτω σενάριο προσθέτει ένα Revακολουθούν στήλη, τη γεμίζει γραμμή προς γραμμή, διατηρεί ένα τρέχον σύνολο και γράφει το ολοκληρωμένο φύλλο σε ένα νέο αρχείο. AddParameter χρησιμοποιείται επειδή η στήλη δεν υπάρχει στο βιβλίο εργασίας προέλευσης. Η κλήση της για μια στήλη που υπάρχει ήδη προκαλεί σφάλμα.

' Read, calculate and export Excel data in UFT One
Dim sh, rowCount, i, units, price, revenue, total

DataTable.Import "D:\Automation\Sales.xls"

Set sh = DataTable.GetSheet(1)
sh.AddParameter "Revenue", ""

rowCount = sh.GetRowCount
Print "Total rows imported: " & rowCount

total = 0
For i = 1 To rowCount
    DataTable.SetCurrentRow i

    units   = DataTable.Value("Units", 1)
    price   = DataTable.Value("Price", 1)
    revenue = CInt(units) * CInt(price)

    DataTable.Value("Revenue", 1) = revenue
    total = total + revenue

    Print "Row " & i & " | Year: " & DataTable.Value("Year", 1) & _
          " | Region: " & DataTable.Value("Region", 1) & _
          " | Revenue: " & revenue
Next

Print "Grand Total Revenue: " & total

DataTable.Export "D:\Automation\Sales_Revenue.xls"
Set sh = Nothing

Παραγωγή:

Total rows imported: 3
Row 1 | Year: 2023 | Region: East | Revenue: 3000
Row 2 | Year: 2024 | Region: East | Revenue: 3750
Row 3 | Year: 2025 | Region: West | Revenue: 6000
Grand Total Revenue: 12750

Τρία σημεία σε αυτό το σενάριο έχουν μεγαλύτερη σημασία από τα υπόλοιπα. Πρώτον, GetRowCount επιστρέφει 3 αντί για 4 επειδή η γραμμή κεφαλίδας καταναλώνεται ως ονόματα στηλών. Δεύτερον, SetCurrentRow καλείται στην αρχή κάθε επανάληψης. Χωρίς αυτήν, και οι τρεις επαναλήψεις θα διάβαζαν την ίδια γραμμή. Τρίτον, οι τιμές που προέρχονται από τον πίνακα δεδομένων είναι συμβολοσειρές, επομένως CInt εφαρμόζεται πριν από τον πολλαπλασιασμό για να αποφευχθεί η συνένωση συμβολοσειρών αντί για αριθμητική. Παράλειψηping DataTable.Export θα άφηνε τα υπολογισμένα έσοδα ορατά στο παράθυρο Δεδομένα, αλλά απόντα από οποιοδήποτε αρχείο στο δίσκο.

Αντικείμενο DataTable vs Αντικείμενο COM του Excel στο UFT

Το αντικείμενο DataTable δεν είναι ο μόνος τρόπος για να αποκτήσετε πρόσβαση σε ένα υπολογιστικό φύλλο. UFT Τα σενάρια μπορούν επίσης να δημιουργήσουν ένα Excel.Application αντικείμενο COM και μονάδα δίσκου Excel απευθείας. Οι δύο προσεγγίσεις επιλύουν διαφορετικά προβλήματα.

Άποψη Αντικείμενο DataTable Αντικείμενο COM του Excel
Εγκατάσταση Excel Δεν απαιτείται στη μηχανή εκτέλεσης Microsoft Το Excel πρέπει να είναι εγκατεστημένο
Στυλ προσφώνησης Με βάση το όνομα της στήλης και τον δείκτη της γραμμής Με συντεταγμένες κελιών, περιοχές ή ονομασμένες περιοχές
Επαναλήψεις Οι γραμμές οδηγούν αυτόματα σε επαναλήψεις δοκιμών Δεν υπάρχει σύνδεσμος προς επαναλήψεις· looping είναι χειροκίνητο
Μορφοποίηση και τύποι Αγνοείται. Μόνο οι τιμές διαβάζονται Πλήρης πρόσβαση σε τύπους, χρώματα και γραφήματα
Πολλαπλά βιβλία εργασίας Ένας πίνακας χρόνου εκτέλεσης, τα φύλλα εισάγονται ένα κάθε φορά Οποιοσδήποτε αριθμός βιβλίων εργασίας είναι ανοιχτός ταυτόχρονα
Αναφορά αποτελεσμάτων Οι τιμές εμφανίζονται στο UFT εκτέλεση αποτελεσμάτων αυτόματα Τίποτα δεν καταγράφεται εκτός αν το αναφέρετε εσείς οι ίδιοι
Επιβάρυνση καθαρισμού Χειριζόμενο από UFT Πρέπει να κλείσετε, να τερματίσετε και να απελευθερώσετε κάθε αντικείμενο

Ο πρακτικός κανόνας είναι απλός. Χρησιμοποιήστε το αντικείμενο DataTable για απλή παραμετροποίηση, όπου κάθε γραμμή υπολογιστικού φύλλου γίνεται μία επανάληψη ενός δοκιμές αυτοματισμού εκτέλεση. Αλλάξτε στο αντικείμενο COM μόνο όταν χρειάζεστε κάτι που δεν μπορεί να εκφράσει ο πίνακας δεδομένων, όπως η ανάγνωση ενός αποτελέσματος τύπου, η σύνταξη μιας μορφοποιημένης αναφοράς ή η σύγκριση δύο βιβλίων εργασίας στην ίδια δέσμη ενεργειών. Το παρακάτω παράδειγμα διαβάζει ένα κελί, γράφει μια κατάσταση πίσω και τερματίζει σωστά το Excel.

Dim xlApp, xlBook, xlSheet, cellValue

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.DisplayAlerts = False

Set xlBook  = xlApp.Workbooks.Open("D:\Automation\Sales.xls")
Set xlSheet = xlBook.Worksheets("Sheet1")

cellValue = xlSheet.Cells(2, 1).Value
Print "Cell A2 contains: " & cellValue

xlSheet.Cells(2, 5).Value = "Reviewed"
xlBook.Save

' Release everything, in this order
xlBook.Close False
xlApp.Quit
Set xlSheet = Nothing
Set xlBook  = Nothing
Set xlApp   = Nothing

Παραγωγή:

Cell A2 contains: 2023

Το κελί A2 περιέχει το 2023 επειδή η γραμμή 1 του φύλλου εργασίας είναι η γραμμή κεφαλίδας και η στήλη A είναι ΈτοςΣημειώστε ότι η διευθυνσιοδότηση COM βασίζεται σε ένα και μετράει την κεφαλίδα, ενώ DataTable.SetCurrentRow 1 σημεία στην πρώτη γραμμή δεδομένων.

Συνηθισμένα σφάλματα κατά τη χρήση του Excel με UFT και πώς να τα διορθώσετε

Τα περισσότερα προβλήματα του Excel στο UFT προέρχονται από ένα μικρό σύνολο επαναλαμβανόμενων λαθών. Η αναγνώρισή τους εξοικονομεί πολύ χρόνο εντοπισμού σφαλμάτων.

⚠️ Προειδοποίηση: Μια ορφανή διεργασία EXCEL.EXE είναι η πιο συνηθισμένη παρενέργεια του αυτοματισμού COM. Κάθε CreateObject("Excel.Application") που δεν ταιριάζει με Quit συν Set … = Nothing αφήνει μια κρυφή παρουσία του Excel να εκτελείται. Μετά από μερικές εκατοντάδες εκτελέσεις δοκιμών, η μνήμη του μηχανήματος εκτέλεσης εξαντλείται και το βιβλίο εργασίας προέλευσης κλειδώνεται για επεξεργασία.

  • Το Excel παραμένει στη μνήμη. Κλείστε το βιβλίο εργασίας, καλέστε xlApp.Quitκαι, στη συνέχεια, αποδεσμεύστε τα αντικείμενα του φύλλου, του βιβλίου εργασίας και της εφαρμογής με αυτήν τη σειρά. Η αποδέσμευση της εφαρμογής αφήνει πρώτα μια ενεργή αναφορά και διατηρεί ενεργή τη διεργασία.
  • Οι αλλαγές εξαφανίζονται μετά την εκτέλεση. DataTable.Value γράφει μόνο στον πίνακα δεδομένων χρόνου εκτέλεσης. Χωρίς DataTable.Export, τίποτα δεν φτάνει στο σύστημα αρχείων.
  • Σφάλμα "Η στήλη δεν υπάρχει" ή μη έγκυρη παράμετρος. Το όνομα της στήλης μεταβιβάστηκε σε DataTable.Value πρέπει να ταιριάζει ακριβώς με το κελί κεφαλίδας, συμπεριλαμβανομένων των κενών στο τέλος. Χρησιμοποιήστε AddParameter για να δημιουργήσετε μια στήλη πριν γράψετε σε αυτήν.
  • Κάθε επανάληψη διαβάζει τις ίδιες τιμές. SetCurrentRow δεν κλήθηκε μέσα στον βρόχο, επομένως ο δείκτης της γραμμής δεν μετακινήθηκε ποτέ.
  • Οι αποκλίσεις κατά μία γραμμή μετράνε. GetRowCount εξαιρεί τη γραμμή κεφαλίδας. Ένα βιβλίο εργασίας με κεφαλίδα και δέκα εγγραφές επιστρέφει 10, όχι 11.
  • Αποτυχίες διαδρομής και δικαιωμάτων. Σκληρά κωδικοποιημένες διαδρομές όπως D:\Automation\Sales.xls διακοπή σε άλλα μηχανήματα. Δημιουργήστε τη διαδρομή από μια μεταβλητή περιβάλλοντος, ώστε το ίδιο σενάριο να εκτελείται σε κάθε agent.
  • Συγχωνευμένα κελιά και πολλαπλές γραμμές κεφαλίδας. Η εισαγωγή αναμένει ακριβώς μία γραμμή κεφαλίδας με μοναδικά ονόματα. Τα συγχωνευμένα κελιά παράγουν κενά ή διπλότυπα ονόματα παραμέτρων.
  • Παραβίαση κοινής χρήσης κατά την εξαγωγή. Το αρχείο προορισμού δεν μπορεί να ανοιχτεί στο Excel ενώ Export εκτελείται. Κλείστε το πρώτα ή εξαγάγετε το σε ένα όνομα αρχείου με χρονική σήμανση.

Μια χρήσιμη συνήθεια είναι να τυλίξετε τον καθαρισμό COM σε ένα On Error Resume Next μπλοκ τοποθετημένο σε μια ειδική λειτουργία ανάκτησης, επομένως μια αποτυχία στη μέση του σεναρίου εξακολουθεί να τερματίζει το Excel. Όταν τα δεδομένα του Excel τροφοδοτούν μια επίσημη περίπτωση δοκιμής Στο αποθετήριο, ισχύει η ίδια αρχή για τα αποτελέσματα: εξαγωγή μία φορά, επαλήθευση της ύπαρξης του αρχείου και, στη συνέχεια, επισύναψή του στην εκτέλεση.

Για να προχωρήσετε περαιτέρω με τα θέματα που θίγονται εδώ, επεξεργαστείτε πλήρως QTP/UFT φροντιστήριο για το ευρύτερο πλαίσιο, μάθετε πώς να προωθείτε τα αποτελέσματα ALM από UFT, επανεξετάστε τα βασικά στοιχεία στο δοκιμές λογισμικούκαι συγκρίνετε την προσέγγιση με το scripting που βασίζεται σε δεδομένα στο Selenium.

Συχνές Ερωτήσεις

UFT εισάγει αρχεία .xls, .xlsx και .csv στον πίνακα δεδομένων χρόνου εκτέλεσης. Η εξαγωγή παράγει πάντα ένα βιβλίο εργασίας .xls, επομένως απαιτείται ένας μετατροπέας ή το αντικείμενο COM του Excel όταν το κατάντη σύστημα απαιτεί τη νεότερη μορφή .xlsx.

Ο πίνακας χρόνου σχεδίασης αποθηκεύεται με τη δοκιμή και παραμένει αμετάβλητος. Ο πίνακας χρόνου εκτέλεσης είναι ένα αντίγραφο που δημιουργείται κατά την έναρξη της εκτέλεσης. Οι εισαγωγές και οι αναθέσεις τιμών επηρεάζουν μόνο το αντίγραφο χρόνου εκτέλεσης, το οποίο απορρίπτεται εκτός εάν εξαχθεί.

Όχι για το αντικείμενο DataTable, το οποίο αναλύει το ίδιο το βιβλίο εργασίας. Ναι για οποιοδήποτε σενάριο που καλεί το CreateObject(“Excel.Application”), επειδή αυτή η διαδρομή αυτοματοποιεί μια πραγματική παρουσία του Excel και αποτυγχάνει αμέσως σε έναν υπολογιστή χωρίς αυτήν.

Ναι. Καλέστε το ImportSheet μία φορά ανά φύλλο με διαφορετικό όνομα φύλλου προορισμού κάθε φορά. Τα καθολικά δεδομένα ανήκουν στο καθολικό φύλλο, ενώ οι τιμές που αφορούν συγκεκριμένες ενέργειες ανήκουν στο αντίστοιχο φύλλο ενεργειών, επομένως οι επαναλήψεις παραμένουν ανεξάρτητες.

Ναι, και ο σκελετός του βρόχου είναι συνήθως σωστός. Επαληθεύστε δύο πράγματα χειροκίνητα: ότι το SetCurrentRow βρίσκεται μέσα στον βρόχο και ότι τα αριθμητικά κελιά μετατρέπονται με CInt ή CDbl. Ο παραγόμενος κώδικας συχνά παραλείπει και τα δύο.

Χαρακτηριστικά τεχνητής νοημοσύνης στη σύγχρονη εποχή UFT Μία έκδοση αναγνωρίζει οπτικά τα στοιχεία ελέγχου, επομένως ένα μετονομασμένο πεδίο δεν διακόπτει πλέον κάθε γραμμή ενός συνόλου δεδομένων. Η Τεχνητή Νοημοσύνη μπορεί επίσης να προτείνει πρόσθετες γραμμές ορίων, διευρύνοντας την κάλυψη του υπολογιστικού φύλλου χωρίς χειροκίνητο σχεδιασμό δοκιμών.

Συνοψίστε αυτήν την ανάρτηση με: