QuickTest Pro- 텍스트와 일치 한 후 첫 번째 버튼을 찾으십시오
-
09-09-2019 - |
문제
동적 객체 인식 (설명 프로그래밍)을 사용하여 주어진 텍스트 다음에 발생하는 "Delete"라는 첫 번째 버튼을 찾으려고합니다 (예 : 텍스트 "항목 XYZ-123"이후에 나타나는 첫 번째 삭제 버튼). 텍스트와 버튼이 Webtable의 단일 행 안에 있으면 kludgy 방법이 있지만 더 우아하거나 신뢰할 수있는 솔루션 (테이블에 의존하지 않는 솔루션)을 기대하고있었습니다.
문서는 .object 속성이 Firefox 내에서 테스트 할 때만 DOM 개체 만 반환한다고 주장하기 때문에 .object 속성을 사용하지 않기를 원합니다.
감사!
해결책
다음은 다음을 사용하는 솔루션입니다 sourceIndex
속성, 주목하십시오 sourceIndex
IE 전용 속성이지만 QTP는 Firefox에서이를 시뮬레이션하므로 동일한 스크립트가 두 브라우저에서 모두 작동합니다. 코디네이션 기반 속성과 같은 코디네이션을 선택할 수 있습니다 abs_x
그리고 abs_y
만약에 source_index
청구서에 맞지 않습니다.
다음에있는 코드는 질문에 따라 질문에 답변하여 일반 기능으로 만들 수 있습니다. 독자를위한 연습으로 남겨 둡니다; o)
''#1. Create description for locator text
Set textD = Description.Create()
textD("micclass").Value = "WebElement"
textD("innertext").Value = ".*Item XYZ-123.*"
''#2. Find locator sourceIndex
set texts = Browser("B").Page("P").ChildObjects(textD)
Set text = texts(texts.Count-1) ' Take last text '
textIdx = text.GetROProperty("source_index") ' works for FF too '
''#3. Create description for button
Set buttonD = Description.Create()
buttonD("micclass").Value = "WebButton"
buttonD("value").Value = "Delete"
Set btns = Browser("B").Page("P").ChildObjects(buttonD)
''#4. Find first button after locator text
For i = 0 To btns.Count
If btns(i).GetROProperty("source_index") > textIdx Then
btns(i).Click ' Or whatever you want to do with it '
Exit For
End If
Next
이 솔루션에 대해 주목해야 할 사항 :
- 텍스트가 포함 된 요소에 대해 아무것도 가정하지 않으며, 이것이 요소의 전체 텍스트라는 것을 알고 있다면
.*
훨씬 더 나은 성능을 위해 "HTML 태그"를 추가하십시오.- 그렇기 때문에 우리는 설명에 맞는 마지막 요소를 취하는 이유입니다. 첫 번째 요소는 다음과 같습니다.
BODY
등.
- 그렇기 때문에 우리는 설명에 맞는 마지막 요소를 취하는 이유입니다. 첫 번째 요소는 다음과 같습니다.
- 텍스트의 설명에서 기본적으로 "micclass"= "webelement"를 지정해야합니다.
ChildObject
필터WebElement
S가 중이자라고 가정합니다.
다른 팁
더 쉬운 방법이 없다고 가정하면 HTML을 구문 분석 할 수 있습니다. HTML에서 검색 텍스트를 찾아 "삭제"버튼을 위해 해당 지점에서 HTML 검색을 시작하십시오. 설명 프로그래밍에 사용할 수있는 HTML에서 ID 또는 기타 식별 속성을 가져올 수 있어야합니다.
자세한 내용을 볼 수있는 샘플 HTML 및 QTP 코드가 있습니까? 아마도 더 쉬운 방법이있을 것입니다.
먼저 질문을 다시보고하겠습니다.
행 번호가 알 수 없지만 행을 찾는 고유 한 키 값이있는 경우 WebTable 내에 포함 된 개체에 대한 참조를 검색하는 방법은 무엇입니까?
버튼, 확인란, 콤보 박스 및 기타 테이블에 적용됩니다.
구현.
1) 행을 찾으십시오
introw = objwebtable.getRowwithCellText (skeyValuetext, "Item") 이름 또는 번호별로 열을 지정할 수 있습니다.
2) 아동 대상을 다시 파악하십시오
set objbutton = objwebtable.childitem (introw, intcol, "webbutton", 0) 숫자별로 만 열을 지정할 수 있습니다. 동일한 셀에 하나 이상의 버튼이있는 경우 마지막 매개 변수가 적용됩니다.
내 블로그에서 다른 기술 사례를 확인하십시오 (http://automationbeyond.wordpress.com/).