簡體   English   中英

如何根據應用程序屏幕上的標簽使UFT腳本跳過excel中的單元格

[英]How do I make my UFT script skip a cell in excel based on the labels on the application screen

我有一個非常動態的應用程序可以自動使用UFT。 應用程序屏幕上的標簽會根據用戶提供的輸入進行更改。 我有一個excel,可以為應用程序中存在的所有可能字段設置字段值。 挑戰在於,我希望我的UFT腳本僅選擇那些它在屏幕上找到字段名稱的字段值。 每次運行腳本時,基於選擇,屏幕上都會顯示任何字段,我希望它僅從excel工作表中選擇那些相應的值,而忽略該excel工作表中的其他值。

例如

Excel具有以下值

姓名:南希(Nancy)成績:8業余愛好:寫作朋友:維羅妮卡(Veronica)BFF:卡倫(Karen)

但是在屏幕上的應用程序中,僅以下標簽出現

名稱:愛好:BFF:

我希望UFT腳本將屏幕上的字段標簽與excel中的標簽進行比較,並從excel中選擇這些值(在本例中為Name,Hobby,BFF),並忽略其他字段(Grade和Friend)。

這可能嗎?

為什么不只是使用

If Obj1.Exist(5) Then
    Obj1.Set ValueFromExcel1
End if

If Obj2.Exist(5) Then
   Obj2.Set ValueFromExcel2
End if

假設您的應用程序在表單上顯示各種編輯框供輸入,並且您正在使用DataTable對象存儲Excel文件。

好的,這就是我要做的。

首先...我將對象收集到對象存儲庫中。 我會將每個可能的編輯框創建/記錄為一個單獨的對象(在應用程序本身的對象內),確保每個對象都可以通過名稱唯一標識...(如果編輯框控件本身不是唯一地命名為場景,QTP可以鏈接到它們旁邊的字幕...)。 另外,如果應用程序僅隱藏編輯框,則確保Visible = True是可識別的屬性之一,以便在Visible = False時找不到它們。

一旦每個對象都在“或”中,則只需檢查它們是否存在即可。

'assuming your excel file is already imported as the global DataTable
if Window("My App").Editbox("Name").exist(0) then Window("My App").Editbox("Name").Set DataTable("Name")
if Window("My App").Editbox("Grade").exist(0) then Window("My App").Editbox("Grade").Set DataTable("Grade")
if Window("My App").Editbox("Hobby").exist(0) then Window("My App").Editbox("Hobby").Set DataTable("Hobby")
if Window("My App").Editbox("Writing Friend").exist(0) then Window("My App").Editbox("Writing Friend").Set DataTable("Writing Friend")
if Window("My App").Editbox("BFF").exist(0) then Window("My App").Editbox("BFF").Set DataTable("BFF")

當然,此示例效率低下,並且可以輕松匯總(即,您可以創建UDF,然后從循環中調用它來從數組中讀取字段名稱...),但是,它應該演示此簡單方法。

我同意@theblastone,您應該提供一些代碼以幫助更好地了解您的情況。 無論如何,我會盡力回答您的問題。 以下是一個示例,您可以圍繞它構建代碼。 我不確定標簽在您的應用程序中如何顯示,我假設每個標簽都可以單獨識別。

j = Datatable.localsheet.GetRowCount

For i = 1 to j
Datatable.LocalSheet.SetCurrentRow i

vout = trim(Datatable("Excel column name",dtlocalsheet))
'Not sure about the following line
vin = browser().page().Webtable().getcelldata(r,c)
If not trim(Ucase(vout))= trim(Ucase(vin)) Then
Datatable("Result",dtlocalsheet) = "Invalid Record"
Do Until trim(Ucase(vout))= trim(Ucase(vin))
i=i+1
If i > j Then
ExitAction  
End IF
Datatable.LocalSheet.SetCurrentRow I
Datatable("Result",dtlocalsheet) = "Invalid Record"
vout = trim(Datatable("Excel column name",dtlocalsheet))
Loop
End If  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM