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

标签 hp-uft

我知道通过描述性编程,你可以做这样的事情:

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

进一步阅读about descriptive programming .

关于hp-uft - 在描述性编程中对多个项目数据使用一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55227448/

相关文章:

qtp - UFT 或 QTP 是否支持 Windows 10?

java - UFT/QTP : Count child objects in Java Internal Frame

macros - QTP 宏/键盘快捷键

internet-explorer - 如何获得具有焦点的 IE 选项卡的句柄?

testing - 使用 HP UFT 的移动自动化

vbscript - 在使用 VB 脚本的 hp-UFT 中,您可以在 VB 脚本中命名 IE 浏览器窗口,以便您可以控制哪个窗口进行导航吗?

hp-uft - 启动 UFT 应用程序会使 Cortana 使用更多 CPU 并且 react 更慢

如果与其他语句混合,ps1 文件中的 Java 语句不会以管理员身份执行。 (错误:Return argument has an invalid type)

sql - 将 SQL 查询中的列插入到 HPE UFT 中的数据列中

ibm-mq - 通过 UFT 12.02 进行 MQ 6.0 测试