Hogyan importáljunk, olvassunk és módosítsunk adatokat az EXCEL-ből? QTP/UFT
⚡ Okos összefoglaló
Adatok importálása, olvasása és módosítása az Excelből QTP/UFT a beépített DataTable objektumra támaszkodik, amely betölt egy munkafüzetet a futásidejű adattáblába, így minden automatizálási szkript a táblázat soraiból vezérelheti a tesztelési lépéseket.

A táblázatok továbbra is a leggyakoribb helyek, ahol a tesztelők tárolják a bemeneti értékeiket, a várható eredményeket és a környezeti beállításokat. QTP, most úgy eladó, mint OpenText UFT Egyszer azután, hogy a termék a HP-től a Micro Focushoz, majd a ...-hoz került. OpenText, a DataTable objektumon keresztül olvassa be ezeket a táblázatokat. Az alábbi szakaszok bemutatják a munkafüzet importálásához, sorainak megszámlálásához, az egyes cellák beolvasásához, az értékek módosításához és a munkalap lemezre való visszaírásához használt pontos utasításokat.
Lépések az adatok importálásához, olvasásához és módosításához az EXCEL programból
Gondolja át, hogy a következőket szeretné importálni: Értékesítés.xls munkafüzetet a tesztedbe.
Miután a fájl importálva lett a UFT, a felső sor lesz az oszlopfejléc, ezért ennek megfelelően strukturálja az adatokat. Az 1. sorban található bármit paraméternévként kezel a rendszer, nem pedig tesztadatként, és minden fennmaradó sort adatsorként számol.
Egy teljes Excel fájl importálásának szintaxisa az alábbiakban látható.
DataTable.Import(FileName)
Esetünkben az utasítás a következőképpen alakul. A VBScriptben nincs szükség zárójelekre, amikor egy metódust utasításként hívunk meg, ezért itt a sima formát használjuk.
DataTable.Import "D:\Automation\Sales.xls"
A futtatás után az importált sorok pontosan úgy jelennek meg a futásidejű Adatok ablaktáblában, ahogyan a munkafüzetben elrendezték őket.
A következő lépésben egy adott munkalap importálásának szintaxisa látható. SheetSource a munkafüzetben található lap, és SheetDest a céllap a futásidejű adattáblában.
DataTable.ImportSheet FileName, SheetSource, SheetDest
Használja a Sorszám lekérése metódus a munkalap adatsorainak számának lekérésére. Minden utasításnak külön sorban kell lennie.
DataTable.Import "D:\Automation\Sales.xls" row = DataTable.GetSheet(1).GetRowCount MsgBox row
A megjelenő üzenetmező az importált munkalap sorainak összegét mutatja.
A mutató adott sorra helyezéséhez használja a Aktuális sor beállítása metódus. A második argumentum DataTable.Value a munkalap száma, nem a sor száma, ezért a sormutatót külön kell mozgatni.
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
Mindkét érték ugyanabból az oszlopból, de két különböző sorból kerül beolvasásra, és az üzenetmező egymás mellett nyomtatja ki őket.
Használja a Érték: metódus egy hozzárendelés bal oldalán az importált munkalap adatainak módosításához. A módosítás a memóriában marad, amíg meg nem hívja a metódust. Export, amely a futásidejű adattáblát visszaírja egy Excel-fájlba.
DataTable.SetCurrentRow 1 DataTable.Value("Year", 1) = 2026 DataTable.Export "D:\Automation\Sales_Updated.xls"
A szerkesztett cella a hozzárendelés futtatása után azonnal látható a futásidejű Adatok ablaktáblában.
Az exportált munkafüzet megnyitásával megerősíthető, hogy a módosított értékek lemezre lettek mentve, nem pedig csak a futtatás időtartamára maradtak meg.
💡 Tipp: Exportáljon egy másik fájlnévvel, mint amelyikkel importálta. Ugyanabba a megnyitott munkafüzetbe való visszaírás a leggyorsabb módja a megosztási szabálysértés kiváltásának és a futtatás elvesztésének.
Excel-adatok olvasása, módosítása és exportálása: Teljes példa
A fenti kódrészletek egy-egy metódust mutatnak be. Egy valós adatvezérelt tesztben ezeket egyetlen ciklusba egyesítik, amely minden soron végigmegy, kiszámít valamit, tárolja az eredményt, és exportálja a munkalapot. Tegyük fel, hogy a munkafüzet Értékesítés.xls a következő négy oszlopot és három adatsort tartalmazza.
| Év | Vidék | Egységek | Ár: |
|---|---|---|---|
| 2023 | Keleti | 120 | 25 |
| 2024 | Keleti | 150 | 25 |
| 2025 | Nyugati | 200 | 30 |
Az alábbi szkript hozzáad egy Revenue oszlopot, sorról sorra kitölti, folyamatosan összegzi az eredményt, és a kész munkalapot egy új fájlba írja. AddParameter azért használatos, mert az oszlop nem létezik a forrás munkafüzetben; egy már létező oszlop meghívása hibát okoz.
' 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
output:
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
Három pont számít jobban ebben a forgatókönyvben, mint a többi. Először is, GetRowCount 3-at ad vissza 4 helyett, mivel a fejlécsor oszlopnevekként kerül felhasználásra. Másodszor, SetCurrentRow minden iteráció tetején meghívódik; enélkül mindhárom iteráció ugyanazt a sort olvasná be. Harmadszor, az adattáblából kijövő értékek karakterláncok, tehát CInt a szorzás előtt kerül alkalmazásra, hogy elkerülje a karakterláncok összefűzését a számtani művelet helyett.ping DataTable.Export a kiszámított bevétel látható maradna az Adatok panelen, de hiányozna a lemezen lévő fájlokból.
DataTable objektum vs. Excel COM objektum UFT
A DataTable objektum nem az egyetlen módja a táblázatkezelő elérésének. UFT szkriptek is létrehozhatnak Excel.Application COM objektum és közvetlenül az Excel futtatható. A két megközelítés különböző problémákat old meg.
| Aspect | DataTable objektum | Excel COM objektum |
|---|---|---|
| Excel telepítése | Nem szükséges a végrehajtó gépen | Microsoft Telepíteni kell az Excelt |
| Címzési stílus | Oszlopnév és sormutató alapján | Cellakoordináták, tartományok vagy elnevezett tartományok szerint |
| Iterációk | A sorok automatikusan vezérlik a teszt iterációkat | Nincs link az iterációkhoz; looping manuális |
| Formázás és képletek | Figyelmen kívül hagyva; csak az értékek kerülnek beolvasásra | Teljes hozzáférés a képletekhez, színekhez és diagramokhoz |
| Több munkafüzet | Egy futásidejű tábla, a lapok egyenként importálhatók | Tetszőleges számú munkafüzet megnyitása egyszerre |
| Eredményjelentés | Az értékek megjelennek a UFT eredmények automatikus futtatása | Semmi sem kerül rögzítésre, hacsak te magad nem jelented be |
| Takarítási teher | Által kezelve UFT | Minden objektumot be kell zárnod, ki kell lépned és el kell engedned. |
A gyakorlati szabály egyszerű. Használd a DataTable objektumot az egyszerű paraméterezéshez, ahol minden táblázatsor egy iterációvá válik. automatizálási tesztelés futtatás. Csak akkor váltson a COM objektumra, ha olyasmire van szüksége, amit az adattábla nem tud kifejezni, például képlet eredményének beolvasásához, formázott jelentés írásához vagy két munkafüzet összehasonlításához ugyanabban a szkriptben. Az alábbi példa beolvas egy cellát, visszaír egy állapotot, és megfelelően leállítja az Excelt.
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
output:
Cell A2 contains: 2023
Az A2 cella tartalmazza a 2023-as számot, mivel a munkalap 1. sora a fejlécsor, az A oszlop pedig a ÉvFigyeljük meg, hogy a COM címzés egy alapú, és a fejlécet számolja, míg DataTable.SetCurrentRow 1 pont az első adatsorban.
Gyakori hibák az Excel használatakor UFT és Hogyan javítsuk ki őket
A legtöbb Excel-probléma UFT kis számú, ismétlődő hibából származnak. Felismerésük rengeteg hibakeresési időt takarít meg.
⚠️ Figyelmeztetés: Az árva EXCEL.EXE folyamat a COM-automatizálás leggyakoribb mellékhatása. Minden CreateObject("Excel.Application") ami nem egyezik meg Quit plusz Set … = Nothing egy rejtett Excel-példányt hagy futni. Néhány száz tesztfuttatás után a végrehajtó gépnek megtelt a memóriája, és a forrásmunkafüzet szerkesztésre zárolva lesz.
- Az Excel a memóriában marad. Zárja be a munkafüzetet, hívja fel
xlApp.Quit, majd engedje fel a munkalap, a munkafüzet és az alkalmazás objektumait ebben a sorrendben. Az alkalmazás első felengedése élő hivatkozást hagy, és életben tartja a folyamatot. - A változások a futás után eltűnnek.
DataTable.Valuecsak a futásidejű adattáblába ír. NélkülDataTable.Exportsemmi sem jut el a fájlrendszerbe. - „Az oszlop nem létezik” vagy érvénytelen paraméterhiba. Az oszlop neve átadva a következőnek:
DataTable.Valuepontosan meg kell egyeznie a fejléccellával, beleértve a záró szóközöket is. HasználjaAddParameterhogy írás előtt létrehozzon egy oszlopot. - Minden iteráció ugyanazokat az értékeket olvassa.
SetCurrentRownem lett meghívva a cikluson belül, így a sormutató soha nem mozdult el. - Egyel eltérő sorok száma.
GetRowCountkizárja a fejlécsort. Egy fejléccsel és tíz rekorddal rendelkező munkafüzet 10-et ad vissza, nem 11-et. - Elérési út és engedélyezési hibák. Fixen kódolt elérési utak, mint például
D:\Automation\Sales.xlsmegszakítás más gépeken. Építsd fel az elérési utat egy környezeti változóból, hogy ugyanaz a szkript fusson minden ügynökön. - Egyesített cellák és több fejlécsor. Az importálás pontosan egy, egyedi neveket tartalmazó fejlécsort vár. Az egyesített cellák üres vagy ismétlődő paraméterneveket eredményeznek.
- Megosztási szabálysértés exportáláskor. A célfájl nem nyitható meg Excelben, amíg a
Exportfut. Először zárja be, vagy exportálja időbélyeggel ellátott fájlnévbe.
Hasznos szokás a COM-tisztítást egy On Error Resume Next a blokk egy erre a célra létrehozott helyreállítási függvénybe kerül, így egy szkript közbeni hiba esetén is leáll az Excel. Amikor az Excel adatai formális próbaper A repository esetében ugyanaz a szabály vonatkozik az eredményekre: exportáld egyszer, ellenőrizd a fájl létezését, majd csatold a futtatáshoz.
A már érintett témák további megértéséhez dolgozza át a teljes QTP/UFT oktatói a tágabb keretrendszerhez, tanulja meg, hogyan lehet az eredményeket a ALM innen UFT, tekintse át az alapokat a szoftver tesztelés, és hasonlítsa össze a megközelítést az adatvezérelt szkripteléssel a Selenium.






