在描述性编程中对多项数据使用一个变量

Using one variable for multiple items data in descriptive programming

我知道使用描述性编程你可以做这样的事情:

Browser("Whosebug").Page("Whosebug").Link("text:=Go To Next Page ", "html tag:=A").Click

但是是否可以创建某种字符串以便我可以分配多个数据值并将其作为单个变量传递?我尝试了很多使用转义字符的组合,但总是出错。

例如在上面的例子中,假设我在页面 object 中有更多属性,所以我通常必须这样做:

Browser("Whosebug").Page("name:=Whosebug", "html id:=PageID")...etc...

但我想将 "name:=Whosebug", "html id:=PageID" 作为单个变量传递,所以当写很多 object 时,我只需要写:

Browser(BrowserString).Page(PageString).WebEdit("name:=asdfgh")

并且第一部分将保持静态,因此如果 parents' 数据需要修改,我只需修改两个变量,而不是所有库中创建的所有 object .

可能吗?

如果我不够清楚,请告诉我。

提前致谢!

我想你要找的是 UFT 的 Description object

这允许您对描述进行更细粒度的控制,因为在描述性编程中所有值都是正则表达式,但是使用 Description 您可以为特定 属性.[=16 关闭正则表达式功能=]

Set desc = Description.Create()
desc("html tag").Value = "A"
desc("innertext").Value = "More information..."
desc("innertext").RegularExpression = False

Browser("Example Domain").Navigate "www.example.com"
Browser("Example Domain").Page("Example Domain").WebElement(desc).Click

如果你想用纯字符串表示它,那就有点问题了,你可以写一个辅助函数,但我不确定我是否会推荐它。

Function Desc(descString)
    Set ret = Description.Create()
    values = Split(descString, "::")
    For Each value In values
        keyVal = Split(value, ":=")
        ret(keyVal(0)).Value = keyVal(1)
    Next
    Set Desc = ret
End Function

' Usage
Browser("Whosebug").Page("Whosebug").WebElement(Desc("html tag:=H2::innertext:=some text")).Click

进一步阅读about descriptive programming

作为 Motti 出色答案的替代方案,您还可以 Set 一个变量来匹配您的初始描述对象,然后根据需要扩展它:

Set myPage = Browser("Whosebug").Page("name:=Whosebug", "html id:=PageID")

之后您可以使用

myPage.WebEdit("name:=asdfgh") 

在其余代码中,只要 myPage 对象在范围内...