我知道通过描述性编程,你可以做这样的事情:
Browser("StackOverflow").Page("StackOverflow").Link("text:=转到下一页","html tag:=A").Click
但是是否可以创建某种字符串,以便我可以分配多个数据值并将其作为单个变量传递?我尝试了很多使用转义字符的组合,但总是出错。
例如,在上面的情况下,假设我在 Page 对象中有更多属性,因此我通常必须执行以下操作:
Browser("StackOverflow").Page("name:=StackOverflow", "html id:=PageID")...etc...
但是我想将 "name:=StackOverflow", "html id:=PageID"
作为单个变量传递,因此在编写许多对象时我只需要编写:
Browser(BrowserString).Page(PageString).WebEdit("name:=asdfgh")
第一部分将保持静态,因此如果需要修改父级的数据,我只需修改两个变量,而不是在所有库中创建的所有对象。
可能吗?
如果我不够清楚,请告诉我。
提前谢谢您!
最佳答案
我认为您正在寻找的是 UFT 的 Description
object
这允许您对描述进行更细粒度的控制,因为在描述性编程中,所有值都是正则表达式,但使用 Description
您可以关闭特定属性的正则表达式功能。
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("StackOverflow").Page("StackOverflow").WebElement(Desc("html tag:=H2::innertext:=some text")).Click
关于hp-uft - 在描述性编程中对多个项目数据使用一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55227448/