2016-06-24 2 views
1

спасибо, что посмотрели на этот вопрос. Просто интересно, есть ли лучший подход для создания объектной модели описания во время выполнения. Мой код не
Object doesn't support this property or method: 'Browser(...).page(...).WebButton'Как создать объектную модель описания во время выполнения в uft/qtp?

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 

Я делаю звонок от действия CreateDescObjAt_RunTime "Account Login","Your Store", "WebButton", "", "Account Login", "Login", "" И это не удается. Однако, если я не прокомментирую эту строку & комментарий, то она работает Browser("title:=.*","name:=.*").page("title:=.*","name:=.*").WebButton(WebBtnDes).fnWebButtonClick

Не могли бы вы помочь мне с правильным подходом? благодаря

ответ

1

Если вы хотите установить общий браузер и страницу, которую вы можете просто использовать показания, аналогичные линии вы комментировали:

Dim objPage : Set objPage = Browser("class:=browser").Page("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 
+0

Спасибо за идеи. Я хотел бы создать объект Browser & page во время выполнения, вызвав функцию. Я использую предложенный подход, но проблема заключается в том, что свойства 'Browser (..). Page (...)' продолжают меняться, и когда используется поиск в Wild Card, это добавляет к времени выполнения. Есть ли другой подход для создания объекта браузера, страницы и webelement с блоком case? –

+0

У вас всегда есть один экземпляр браузера? Если это так, вы можете объявить 'Browser (« CreationTime: = 0 »)'. Что касается меняющейся страницы, мне придется дать немного больше исследований, прежде чем отвечать на них, потому что я привык всегда иметь объекты, сопоставленные в моей компании, или же использовать общий браузер, например, упомянутый –

0

MicClass из в Webbutton не может быть кнопка. Следует WebButton

'Вы используете следующие

WebBtnDes("micclass").value="button" 

Это должно быть: WebButton

' Во всяком случае Описывая Описание объекта

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