getROProperty不会根据UFT中的函数传递的对象进行更新

时间:2019-03-20 17:07:38

标签: hp-uft

在使我发疯的事情上,我需要一些帮助。

在我的工作框架中,我们使用以下结构: Functionality_OR.tsr-Functionality_AppObjects.qfl-Functionality_Tasks.qfl-Utils.qfl-主要测试 (Functionality_Tasks和Utils完全相同,但是我们将Utils用作“一般任务库”,并带有诸如errorScreenCapture之类的子类,因此我们从Functionality_Tasks函数/子类中调用utils函数/子类)

在我们的框架中,要求我们为Functionality_OR.tsr中的每个对象在Functionality_AppObjects.qfl库中定义如下函数:

Public Function getSomeObject
    set getSomeObject = Browser("asd").Page("asd").WebButton("someObject")
End Function 

然后从该函数中获取对象。

现在,我决定使用函数来创建对象-我知道这很奇怪,但是多OR管理变得令人讨厌,有时我会丢失对象引用,因为UFT会说“为什么不这样”。为此,我决定使用DP切换到基于功能的对象。一个优点是我也使用较少的文件,因为对象库将更易于处理(我知道我不尊重框架,所以请不必告诉我)。现在到了重点。

我定义了此函数来创建对象:

'On util Tasks library
Public Function createObject(parameters)
    set oDesc = Description.Create
    'splitText functions returns an array so I can reuse this
    'with different object types
    Properties = splitText(parameters)

    oDesc("html tag").value = Properties(0)

    Select Case lcase(Properties(0))
        Case "span"
            oDesc("html id").value = Properties(1)
        Case "input"    
            oDesc("html id").value = Properties(1)
            oDesc("value").value = ".*" 'Any character so I can modify it from outside
        Case etc...
    End Select

    Set createObject = oDesc

End Function

上一个函数 工作 ,并且在我拥有的每个函数对象库中都这样调用:

'Main page object-library
Public Function getBtnDataSearch
    Tag = "INPUT"
    htmlID = "button_BUTTON435c"
    Set Obj = createObject(Tag & ";" & htmlID)
    set getBtnDataSearch = getFrameTerminal.WebButton(Obj)
End Function

Public Function getTxtDataSearch
    Tag = "INPUT"
    htmlID = "txt2335c"
    Set Obj = createObject(Tag & ";" & htmlID)
    set getTxtDataSearch= getFrameTerminal.WebButton(Obj)
End Function

结果与他们在我的框架中使用的结果相同。因此,如果我需要标签对象,则可以将Id和“ Span”作为标记传递,并且不必担心太多,因为“ html id”对于每个对象都是唯一的(幸运的是)。

现在我遇到的问题是这些可以在动作/主体上起作用:

msgbox getTxtSearchField.Object.value
msgbox getProperty(getTxtSearchField, "value")

作为参考,getProperty()是一个util函数,如果找到对象,则返回getROProperty,如果未找到,则调用errorScreenCapture,clickObject()的功能相同,但是单击对象。

但是当我在函数内部调用它时,它会带来空的作用

'Action/main

someSub (TestArgs1, TestArgs2, etc...)


'Main page_Task Library

public someSub (param1, param2, etc...)    
     innerSub (param1, etc...)
end sub

public innerSub (param1, etc...)
     'some action
     'some action
     clickSpecialButton getBtnDataSearch, getTxtDataSearch
     'some action
     'some action
end sub

'Utils library

public sub clickSpecialButton (objectButton, byref textField)
    'I empty the value before using the object because the web
    'application sometimes refreshes and changes the value to default
    textField.set ""
    'this Click changes the value of textField object
    clickObject objectButton
    'Due to slow response I looped a Sync till value is changed
    While (getProperty(textField, "value") = Empty)
        Browser.Sync()
    Wend
End Sub

但是出于某种不可思议的原因,如果我“ msgbox值属性”,它将带来空白:

  • 将其设置为“”之前-向我显示其带来的默认值
  • 将其设置为“”后-显示为空(完全逻辑)
  • 执行objectButton.click(更改值)后,仍然显示为空。

那是我的头部爆炸的地方,我想这与范围有关。但是我不清楚,关于如何查看/修复正在发生的事情有什么想法吗?

0 个答案:

没有答案