Descript라이브 프로그래밍 QTP/UFT동적 및 정적
⚡ 스마트 요약
Descript라이브 프로그래밍은 다음을 가능하게 합니다 QTP or UFT 하나의 문장이 속성 값 쌍 또는 다음과 같은 형태로 객체 설명 자체를 전달합니다. Descript이온 객체이므로 객체가 객체 저장소에 저장된 적이 없더라도 단계가 실행됩니다.
Descript프로그래밍 중이신가요?
Descript라이브 프로그래밍 이 함수는 AUT(테스트 대상 시스템) 내의 객체에 대한 연산을 실행하는 데 사용되며, 해당 객체의 정의는 저장되어 있지 않습니다. 개체 저장소이 메커니즘을 사용하면 객체 저장소의 식별 과정을 건너뛰고 객체를 직접 제공할 수 있습니다. Descript진술 자체에 이온이 있습니다.
객체 이름은 스크립트의 객체와 객체 저장소의 해당 설명을 연결하는 데 사용됩니다. 즉, 스크립트와 객체 저장소에서 객체 이름을 변경하더라도 스크립트는 계속 실행됩니다. 이 개념에 대한 자세한 내용은 다음 영상을 참조하세요.
여기에서 확인하세요 비디오에 접근할 수 없는 경우
비디오 하이라이트
- 객체 삭제 Descript개체 저장소에서 에이전트 이름 WinEdit 상자의 항목을 선택합니다. 테스트를 다시 실행하면 개체를 인식할 수 없으므로 실패합니다. 스크립트가 실패하는 이유를 살펴보겠습니다.
- 실행 시간 동안, UFT WinEdit 상자에서 수행되는 작업과 개체를 식별합니다. Descript객체 저장소의 ion은 에이전트 이름으로 저장됩니다. 이 이름은 다음과 같은 용도로 사용됩니다. trac객체 저장소에서 해당 객체를 k라고 합니다. 부모 객체는 자식 객체와 같은 이름을 가질 수 없습니다. QTP 먼저 리포지토리에서 객체를 고유하게 매핑합니다. 그런 다음 객체 리포지토리에 저장된 설명을 사용하여 이름을 설명으로 바꾸고, 결과로 생성된 문장을 사용하여 테스트 대상 애플리케이션에서 해당 객체를 식별합니다.
- 저희의 경우 해당 객체 설명을 완전히 삭제했기 때문에 스크립트가 실패합니다.
- 하지만 만약 대신에 QTP 객체 설명을 대체하는 대신, 테스터인 당신이 스크립트에서 객체 설명을 직접 지정하는 건가요? 이건 그저 "Descript라이브 프로그래밍”
아래 두 양식은 바로 그 책임의 변화를 구현하는 것이며, 각 양식은 서로 다른 유형의 시나리오에 적합합니다.
유형 Descript라이브 프로그래밍
당신이 사용할 수 Descript두 가지 방법으로 프로그래밍
- 정적인
- 동적
정적인 Descript라이브 프로그래밍
정적 메서드에서 객체 식별을 위해 다음 형식으로 객체의 속성을 지정합니다.
property:=values,
이 형식을 속성 값 쌍이라고 하며 따옴표로 묶습니다. 전체 내용을 작성하면 정적 문은 다음과 같습니다.
TestObject("PropertyName1:=PropertyValue1", "PropertyName2:=PropertyValue2").Method
객체 식별에 여러 설명이 사용되는 경우 쉼표를 사용하여 지정할 수 있습니다.
따라서 우리의 경우 에이전트 이름에 대한 설명은 다음과 같습니다.
"nativeclass:=Edit", "attached text:=Agent Name:"
정적 설명은 명령이 실행되는 지점에서 읽히므로 일회성 단계나 다시 기록할 필요가 없는 스크립트의 빠른 수정에 적합합니다.
동적 Descript라이브 프로그래밍
동일한 작업을 수행하는 두 번째 방법은 Dynamic을 사용하는 것입니다. Descript라이브 프로그래밍
스크립트가 설명적 프로그래밍 개체 후보를 여러 번 사용하는 경우 각 명령문에 대한 모든 속성 값 쌍을 지정하는 것은 매우 번거로운 작업입니다.
이러한 경우, 다음을 활용할 수 있습니다. Descript이온 클래스는 다음에서 제공합니다. QTP
설명 객체를 생성하는 구문은 다음과 같습니다.
Set MyDescription = Description.Create() MyDescription("property").Value = "property-value"
이것이 동적 방법입니다.
위에서 사용한 에이전트 이름 속성으로 해당 객체를 채우면 완전하고 재사용 가능한 설명이 생성됩니다.
Dim oDesc Set oDesc = Description.Create() oDesc("nativeclass").Value = "Edit" oDesc("attached text").Value = "Agent Name:"
변수 설명 이제 해당 객체가 필요한 모든 명령에 전달할 수 있으므로 한 번의 수정으로 해당 객체를 사용하는 모든 단계가 업데이트됩니다.
정적 vs 동적 Descript실시간 프로그래밍: 각 기법은 언제 사용해야 할까요?
두 형식 모두 동일한 런타임 설명을 생성하므로 선택은 기능보다는 유지 관리와 관련이 있습니다.
| 기준 | 정적(인라인) | 동적(Descript이온 객체) |
|---|---|---|
| 설명이 작성되는 방식 | 테스트 객체 호출 내부에 입력된 속성 값 쌍 | 생성된 객체에 추가된 속성 Descript이온.생성() |
| 재사용 | 객체가 필요한 모든 문장에서 반복됩니다. | 하나의 변수에 저장되어 필요한 곳 어디든 전달됩니다. |
| 가독성 | 짧은 문장은 읽기 쉽지만, 긴 문장은 다루기 어려워진다. | 추가 설정 라인이 있지만, 문장 자체는 간결합니다. |
| 런타임 변경 | 변수들을 연결하여 생성하지 않는 한 값은 고정되어 있습니다. | 속성 값은 사용 전에 다시 할당할 수 있습니다. |
| ChildObjects와 함께 작동합니다. | 아니요, filter 인수는 반드시 a여야 합니다. Descript이온 객체 | 네, 이것이 필수 양식입니다. |
| 가장 적합 | 저장소에 없는 객체에 대해 한두 단계 작업을 수행합니다. | 반복적으로 사용되는 객체 또는 실행 시점에 검색되는 컬렉션 |
왜 사용 하는가? Descript프로그래밍 중이신가요?
아래 대본은 물체의 개수를 미리 알 수 없는 실제 시나리오에 대한 비디오 설명과 함께 제공됩니다.
비디오 대본
- 가장 중요한 질문은 객체 식별 프로세스가 이미 처리되고 있는데 왜 DP를 사용해야 하는가 하는 것입니다. QTP
- 구인 포털 테스트를 담당하게 되었다고 가정해 보겠습니다. 포털에 검색어를 입력하고, 테스트에서는 모든 채용 공고를 선택한 후 "지원하기" 버튼을 클릭해야 합니다.
- 하지만 표시되는 채용 공고 수는 검색어와 스크립트 실행 시점에 이용 가능한 채용 공고 수에 따라 달라지며, 표시될 채용 공고 수를 사전에 예측할 방법은 없습니다.
- 이러한 경우, 설명적 프로그래밍을 사용할 수 있습니다. 체크박스의 개수와 이름은 몰라도 해당 객체의 클래스가 "WebCheck"라는 것은 알고 있기 때문입니다.Box"
- 당신은을 사용할 수 있습니다 ChildObjects 메서드 특정 부모에 속한 객체를 반환하려면
- 다음과 같은 코드 줄 -
Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
이 페이지의 모든 하위 객체를 반환합니다.
- 하지만 우리는 WebCheck만을 원합니다Box 객체를 생성하려면 필터 객체를 만들고 해당 속성을 웹 체크박스 클래스로 설정한 다음, 이 필터를 ChildObjects 메서드의 인수로 전달하면 됩니다.
- 이 경우에는 체크박스만 반환됩니다.
- 다음으로, 다음과 같은 코드를 작성하면 0부터 시작하여 전체 체크박스 컬렉션에 접근하고 모든 체크박스를 켜짐으로 설정할 수 있습니다.
- 다음으로 적용 버튼을 클릭하여 테스트를 완료할 수 있습니다.
- VOUS pouvez의 aussi 사용 Descript자동 숨기기 패널, 계층 구조가 변경되는 객체, 중첩된 내부 객체, 하위 메뉴 등 기록하기 어려운 객체를 실행하기 위한 프로그래밍이 필요합니다.
- 설명 프로그래밍을 사용하여 고급 문자열 조작을 수행할 수도 있습니다.
- 인덱스 속성과 함께 설명적 프로그래밍을 사용하면 식별하기 어려운 객체를 찾는 데 매우 유용할 수 있습니다.
- 객체 계층 구조에서 객체에 대해 프로그래밍 방식으로 설명하는 경우, 그 후속 자식 객체에 대해서도 설명적인 프로그래밍 방식을 사용해야 합니다.
- 예를 들어, Page 객체에 설명적 프로그래밍이 사용되었지만 그 뒤를 잇는 자식 WinEdit 객체가 객체 저장소에서 온 경우, 해당 설명은 잘못되었습니다.
- 반대로, Page 객체와 WinEdit 객체 모두에 대해 설명적 프로그래밍을 사용하는 경우에는 해당 진술이 옳습니다.
글로 옮겨 적으면, 녹취록에 설명된 필터와 루프는 다음과 같습니다.
Dim oFilter, allCheckBoxes, i Set oFilter = Description.Create() oFilter("micclass").Value = "WebCheckBox" Set allCheckBoxes = Browser("Jobs").Page("QTP").ChildObjects(oFilter) For i = 0 To allCheckBoxes.Count - 1 allCheckBoxes(i).Set "ON" Next
컬렉션은 0부터 시작하기 때문에 루프가 멈춥니다. 개수 – 1필터는 해당 코드가 실행될 때 평가되므로 검색 결과가 세 개이든 서른 개이든 동일한 코드가 작동합니다.
정규 표현식, 서수 식별자 및 일반적인 함정
Descript라이브 프로그래밍은 대부분의 사람들이 처음에는 눈에 띄는 이유 없이 명령문이 실패할 때 놀라는 두 가지 방식으로 작동합니다.
1) 모든 속성 값은 정규 표현식으로 처리됩니다. 캡션은 다음과 같습니다. 총액(USD) 따라서 괄호가 정규 표현식 구문이기 때문에 일치하지 않습니다. 백슬래시로 이스케이프하거나 해당 속성에 대해 정규 표현식 평가를 비활성화하십시오. Descript이온 객체:
Set oDesc = Description.Create() oDesc("name").Value = "Total (USD)" oDesc("name").RegularExpression = False
2) 서수 식별자를 사용하여 동점을 해결합니다. 설명이 여전히 둘 이상의 객체와 일치하는 경우, 추가하세요. 색인, 위치 or 생성 시간 추가 속성으로 사용됩니다. 인덱스 카운트는 0부터 시작합니다.
WebEdit("name:=userName", "html tag:=INPUT", "index:=0").Set "guru99" WebEdit("name:=userName", "html tag:=INPUT", "index:=1").Set "guru99"
애플리케이션 디버깅을 시작하기 전에 확인해야 할 세 가지 추가적인 함정이 있습니다.
- 마이크클래스라벨이 아니라 클래스 이름 Object Spy에 표시됩니다. 표시 이름은 설명에서 유효한 속성이 아닙니다.
- 속성 이름은 대소문자를 구분하지 않지만, 공백을 포함하여 기술에서 보고하는 철자와 정확히 일치해야 합니다. 첨부된 텍스트 HTML 태그.
- Descript라이브 프로그래밍은 저장소를 우회하므로 객체 인식을 향상시키지 않습니다. 올바른 추가 기능이 로드되지 않으면 어떤 설명으로도 객체를 식별할 수 없습니다.
