2

我有以下 HTML 标记,QTP 将其正确识别为WebEdit对象:

<input style="width: 228px;" aria-describedby="x-auto-0" _id="Tenant" name=""
tabindex="1" id="x-auto-23-input" class="x-form-field x-form-text x-form-invalid"
type="text">

如何_id从 HTML 标签中获取属性到 QTP 中的对象属性中?我已经使用 Object Identification 对话框将_idhtml _id属性添加到WebEdit类中。但是,当我使用 Object Spy 或 Recorder 时,都没有填写。

请注意,正在测试的页面包含许多这样的文本输入,每个输入都有一个空白name但具有描述性的_id. 我正在尝试_id进入 WebEdit 的属性,以便可以通过Browser("Browser").Page("Page"),WebEdit("_id:=Tenant").

4

4 回答 4

3

可以通过该.Object.GetAttribute()函数获取 HTML 属性。这对于获取非标准属性(即“_id”)特别有用。

属性“id”与运行时对象属性“html id”对齐,因此可以使用GetROProperty()或上面的方法获得。

使用这些方法的示例如下:

Dim objUI    
Set objUI = Browser("Browser").Page("Page").WebEdit("WebEdit")
Print objUI.GetROProperty("html id")
Print objUI.Object.GetAttribute("id")
Print objUI.Object.GetAttribute("_id")
Set objUI = Nothing

要使用描述性编程来访问对象,您可以使用attribute/符号以及正则表达式。例如:

Set objUI = Browser("Browser").Page("Page").WebEdit("attribute/_id:=Tenant", "html id:=x-auto-\d*-input")

默认情况下,.Object 方法和属性不会在调试查看器中为 Web 元素公开。可以通过注册 IE8 中包含的 Process Debug Manager (PDM) 来增强 QTP 调试。这将帮助您发现 QTP 中可用的其他属性和方法,方法是使用.Object. 有关在 QTP 11 中增强调试的更多信息,请参阅以下文章: http: //northwaysolutions.com/blog/qtp-11-how-to-enable-enhanced-debugging-features/

于 2013-03-27T19:11:54.893 回答
2

您可以使用attribute/customAttributeKey:=customAttributeValue标识符获取具有自定义属性(属性)的对象。在你的情况下:

Set TenantWebEdit = Browser("Browser").Page("Page").WebEdit("attribute/_id:=Tenant")

如果您想使描述唯一,这也允许您输入更多标识符:

Set TenantWebEdit = Browser("Browser").Page("Page").WebEdit("attribute/_id:=Tenant", "class:=.*x-form-text.*")
于 2013-03-28T09:05:13.953 回答
0

我不知道这是否是正确WebEdit的方法,但我能够通过将所有对象加载到Dictionary它们的键控中来破解我需要的东西_id

Dim WebEdit_desc
Set WebEdit_desc = Description.Create
WebEdit_desc("micClass").value = "WebEdit"

Dim WebEdits
Set WebEdits = CreateObject("Scripting.Dictionary")

Dim WebEdit_list
Set WebEdit_list = Browser("Browse Catalog").Page("Add Tenant").ChildObjects(WebEdit_desc)
Dim i
For i = 0 to WebEdit_list.Count() - 1
    If NOT IsNull(WebEdit_list(i).Object.GetAttribute("_id")) Then
        WebEdits.Add WebEdit_list(i).Object.GetAttribute("_id"), WebEdit_list(i)
    End If
Next
Set WebEdit_list = Nothing

WebEdits.Item("Tenant").Set DataTable("Tenant", dtLocalSheet)
于 2013-03-27T23:19:38.317 回答
0

从浏览器文档中提取lang属性

Msgbox browser("creationtime:=0").Page("index:=0").GetROProperty("attribute/lang")

于 2015-12-14T07:29:27.000 回答