QuickTest Pro- 텍스트와 일치 한 후 첫 번째 버튼을 찾으십시오

StackOverflow https://stackoverflow.com/questions/947543

  •  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 필터 WebElementS가 중이자라고 가정합니다.

다른 팁

더 쉬운 방법이 없다고 가정하면 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/).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top