Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vbscript 如何在uft/qtp中创建运行时的描述对象模型?_Vbscript_Qtp_Hp Uft - Fatal编程技术网

Vbscript 如何在uft/qtp中创建运行时的描述对象模型?

Vbscript 如何在uft/qtp中创建运行时的描述对象模型?,vbscript,qtp,hp-uft,Vbscript,Qtp,Hp Uft,谢谢你关注这个问题。只是想知道是否有一种在运行时创建描述对象模型的最佳方法。我的代码失败 对象不支持以下属性或方法:'Browser(…).page(…).WebButton' FunctionCreateDescObjAt_RunTime(StrBrowserNme,StrBrwsrTitle,StrObject,StrPgeNme,StrPgtitle,StrObjectName,index)` 'create a description object for Browser &a

谢谢你关注这个问题。只是想知道是否有一种在运行时创建描述对象模型的最佳方法。我的代码失败
对象不支持以下属性或方法:'Browser(…).page(…).WebButton'

FunctionCreateDescObjAt_RunTime(StrBrowserNme,StrBrwsrTitle,StrObject,StrPgeNme,StrPgtitle,StrObjectName,index)`

    'create a description object for Browser & Page`

    Set WebBrwsrDesc= Description.Create
        WebBrwsrDesc("application version").value= "Internet Explorer.*"
        If StrBrowser<>"" Then
            WebBrwsrDesc("name").value=StrBrowserNme
            WebBrwsrDesc("title").value=StrBrwsrTitle
        End If

    Set WebPageDesc= Description.Create
        WebPageDesc("name").value=StrPgeNme
        WebPageDesc("title").value=StrPgtitle

'   'Based on the type of object, execute the condition`

    Select Case StrObject`

        Case "WebButton"
            Set WebBtnDes= Description.Create
            WebBtnDes("html tag").value="INPUT"
            WebBtnDes("name").value=StrObjectName   
            WebBtnDes("micclass").value="button"
            WebBtnDes("index").value=index
            'Browser("title:=.*","name:=.*").page("title:=.*","name:=.*").WebButton(WebBtnDes).fnWebButtonClick
            Browser(WebBrwsrDesc).page(WebPageDesc).WebButton(WebBtnDes).click

    end select

End Function
FunctionCreateDescObjAt_运行时(StrBrowserNme、strbrwstitle、StrObject、strpgeneme、StrPgtitle、StrObjectName、index)`
'为浏览器和页面创建描述对象(&P)`
设置WebBrwsrDesc=Description.Create
WebBrwsrDesc(“应用程序版本”).value=“Internet Explorer.*”
如果StrBrowser“”则
WebBrwsrDesc(“名称”)。值=StrBrowserNme
WebBrwsrDesc(“标题”)。值=STRBRWSRDESTITLE
如果结束
设置WebPageDesc=Description.Create
WebPageDesc(“名称”).value=StrPgeNme
WebPageDesc(“标题”).value=StrPgtitle
“”根据对象的类型,执行条件`
选择Case StrObject`
案例“韦布顿”
设置WebBtnDes=Description.Create
WebbtNodes(“html标记”).value=“输入”
WebbtNodes(“名称”)。值=StrObjectName
WebBtnDes(“micclass”).value=“按钮”
WebbtNodes(“索引”)。值=索引
'浏览器(“标题:=.*,”名称:=.*)。页面(“标题:=.*,”名称:=.*)。WebButton(WebbtNodes)。fnWebButtonClick
浏览器(WebBrwsrDesc).页面(WebPageDesc).网络按钮(WebBtnDes).单击
结束选择
端函数
我正在打一个行动电话
CreateDescObjAt\u运行时“帐户登录”、“您的商店”、“WebButton”、“帐户登录”、“登录”、“登录”
,这是失败的。但是,如果我取消注释这一行&注释问题行,它会工作
Browser(“title:=.*,”name:=.*)。页面(“title:=.*,”name:=.*)。网络按钮(webbtnds)。fnWebButtonClick


你能帮我找到正确的方法吗?谢谢

如果您想设置通用浏览器和页面,只需使用类似于您所评论行的语句即可:

Dim objPage:Set objPage=Browser(“class:=Browser”)。页面(“title:=.*)

上面的一行将创建一个可以使用的页面对象

检查传递给函数的参数,确保正确标识浏览器和页面

对于要在运行时创建的实际对象部分,需要创建一个
Description
对象,然后查找主对象(在本例中为页面)的
ChildObjects
,并将其存储到集合中。之后,您可以检查是否找到您的对象。因此,您的
Select Case
部分如下所示:

Select Case StrObject

    Case "WebButton"
        ' This is just a description of your object, not your actual object
        Dim descButton : Set descButton = Description.Create
            descButton("html tag").value="INPUT"
            descButton("name").value=StrObjectName   
            descButton("micclass").value="button"
            descButton("index").value=index

        ' In the following statement you are looking for all child objects
        ' of your page that matches with your description, and storing it
        ' into the collButton collection
        Dim collButton : Set collButton = Browser("class:=browser").Page("title:=.*").ChildObjects(descButton)

        If collButton.count > 0 Then ' Now you are checking if any object was found
            ' There are many ways to get the button object that you want.
            ' Here I'm just assuming you want the first one, but you could iterate
            ' into the collection to make sure you have the right one
            Dim objButton : Set objButton = collButton(0) ' I'm getting the first item, which is in index 0 of your collection
            objButton(0).Click ' This object already have the whole Browser().Page().WebButton() identified, so no need to use it
        Else
            MsgBox "No WebButton found. Please check your Description object"
        End If

    ' Your other cases...

    End Select

Web按钮的MicClass不能是按钮。应该是韦布顿

“您正在使用以下命令

WebBtnDes("micclass").value="button"
应该是:韦布顿

'描述描述对象

Set ObjButton=Description.Create
ObjButton("MiCClass").value="WebButton"
ObjButton("name").value=strButtonName
ObjButton("htmlid").value=strHtmlId
Set ObjButton= Browser().page().ChildObject(ObjButton)

谢谢你的见解。我想通过调用函数在运行时创建Browser&page对象。我正在使用建议的方法,但问题是,
浏览器(…).Page(…)
属性不断变化&使用通配符搜索时,它会增加执行时间。是否有其他方法可以使用in-case块创建浏览器、页面和webelement对象?是否始终有一个浏览器实例在运行?如果是这样,您可以声明
浏览器(“CreationTime:=0”)
。至于正在更改的页面,在回复您之前,我必须进行更多的研究,因为我习惯于在我的公司中始终映射我的对象,或者像前面提到的那样使用通用浏览器