GetRoProperty, GetToProperty에서 QTP/UFT 예와 함께
⚡ 스마트 요약
Object Spy는 테스트 대상 애플리케이션의 모든 컨트롤의 속성과 메서드를 보여주고, GetROProperty, GetTOProperty 및 SetTOProperty는 해당 속성 값을 읽고 씁니다. QTP or UFT 실행 시 하나의 스크립트만 실행됩니다.
이 튜토리얼에서는 개체 스파이.
개체 스파이는 사용자 환경의 개체와 관련된 유용한 속성 및 메서드를 확인하는 데 도움이 될 수 있습니다.
HP/마이크로 포커스 UFT 자습서 또한 설명 GetROProperty, GetTOProperty 및 SetTOProperty.
⚠️ 버전 참고: 여기에 설명된 도구는 HP QuickTest Professional로 출시되었고, 이후 Micro Focus Unified Functional Testing으로 이름이 바뀌었으며, 현재는 다른 이름으로 판매되고 있습니다. OpenText 기능 테스트 (UFT 하나)Object Spy와 세 가지 메서드 모두 아래 설명된 대로 정확히 작동합니다.
여기에서 확인하세요 비디오에 접근할 수 없는 경우
개체 스파이
- Object Spy는 기능입니다. QTP 이를 통해 테스트 및 런타임 객체의 속성과 메서드를 모두 볼 수 있습니다.
- 또한 선택한 방법에 대한 구문도 제공합니다.
- Object Spy는 선택한 객체의 전체 계층 구조를 보여줍니다.
이러한 계층 구조는 중요합니다. 왜냐하면 Object Spy에서 복사한 속성 이름은 아래 세 가지 메서드가 기대하는 정확한 문자열이기 때문입니다. 따라서 객체를 스파이하는 것은 거의 모든 속성 검색 작업의 첫 번째 단계입니다.
GetROProperty
- GetROProperty는 객체 속성의 런타임 값을 검색하는 데 사용되는 내장 메서드입니다.
GetROProperty를 사용하는 데는 4단계가 있습니다.
- GetROProperty를 사용할 객체를 기록해 두세요. 개체 저장소.
- 기록된 객체의 경우, 사용 가능한 런타임 속성을 식별합니다. Object Spy를 사용할 수 있습니다.
- GetROProperty 메서드를 사용하여 식별된 런타임 속성을 검색하고 해당 값을 변수에 저장합니다.
- 이 값을 추가 공제에 사용하십시오.
값이 실시간 컨트롤에서 읽히기 때문에 해당 코드가 실행될 때 애플리케이션이 열려 있어야 하고 객체가 화면에 실제로 존재해야 합니다.
SetTOProperty 및 GetTOProperty
- 객체 저장소에 저장된 웹 버튼을 생각해 보세요.
- 테스트가 실행될 때 QTP 이 객체의 복사본인 Test Object를 생성하고 이를 Run Time Object와 비교합니다.
- GetTOProperty를 사용하면 테스트 객체의 속성 값을 가져올 수 있습니다.
- SetTOProperty를 사용하면 테스트 객체의 속성 값을 변경할 수 있습니다.
- 테스트가 완료되면 이 테스트 객체는 폐기되며, SetTOProperty를 사용하여 객체 속성에 적용한 모든 수정 사항도 함께 삭제됩니다.
- 테스트가 다시 실행되면 개체 저장소에 저장된 원래 속성 값을 사용하여 테스트 개체의 새 복사본이 생성됩니다.
- 테스트 스크립트에 여러 줄의 코드가 있고 환경이 불안정한 경우 GetTOProperty 및 SetTOProperty 함수를 사용하는 것을 고려해 볼 수 있습니다.
- 참고로 SetROProperty는 없습니다.
구문 및 예
이 세 가지 메서드는 모두 테스트 객체의 계층 구조 맨 끝에 있는 객체에서 호출되며, 세 메서드 모두 문자열 형태의 설명 속성 이름을 매개변수로 받습니다. 아래 표는 각 메서드의 시그니처를 보여줍니다.
| 방법 | 통사론 | 읽거나 쓸 수 있다 |
|---|---|---|
| GetROProperty | object.GetROProperty(Property) | 애플리케이션에서 실시간 제어 정보를 읽습니다. |
| GetTOProperty | object.GetTOProperty(Property) | 저장된 테스트 객체 설명을 읽습니다. |
| 속성에 설정 | object.SetTOProperty 속성, 값 | 이번 실행에 대한 테스트 객체 설명을 작성합니다. |
실행 시간 값을 읽는 것은 단일 명령문으로 이루어집니다. 다음 예시는 다음에서 가져온 것입니다. 공식 검색 및 설정 값 참조실행 세션 중에 링크의 대상 주소를 가져옵니다.
link_href = Browser("Technologies").Page("Technologies").Link("Jobs").GetROProperty("href")
테스트 객체의 속성을 쓰고 읽는 과정은 매우 간단합니다. 아래 코드는 제출 버튼의 이름을 내 버튼으로 설정하고, 같은 값을 그대로 읽어옵니다.
Browser("QA Home Page").Page("QA Home Page").WebButton("Submit").SetTOProperty "Name", "my button" ButtonName = Browser("QA Home Page").Page("QA Home Page").WebButton("Submit").GetTOProperty("Name")
일반적인 검증은 이 두 가지 아이디어를 결합합니다. GetROProperty를 사용하여 런타임 값을 읽은 다음 테스트에서 예상하는 값과 비교합니다.
strValue = Browser("Welcome").Page("Find a Flight").WebList("fromPort").GetROProperty("selection") If strValue = "Acapulco" Then Reporter.ReportEvent micPass, "Default city", "Default city is correct" Else Reporter.ReportEvent micFail, "Default city", "Unexpected value: " & strValue End If
GetROProperty와 GetTOProperty의 차이점
두 이름은 한 글자만 다르며, 도구에서 가장 혼동하기 쉬운 쌍입니다. RO는 런타임 객체, TO는 테스트 객체를 나타내며, 각각 다른 위치에서 읽어옵니다.
| 비교의 지점 | GetROProperty | GetTOProperty |
|---|---|---|
| 값의 출처 | 실행 중인 애플리케이션의 실시간 제어 | 테스트 객체에 대해 저장된 설명 |
| 신청은 열려 있어야 합니다. | 가능 | 아니 |
| SetTOProperty 변경 사항을 감지합니다. | 아니 | 네, 현재 실행 중인 버전에 한해서요. |
| 일반적인 사용 | 사용자가 실제로 보는 것을 확인합니다. | 객체가 식별되는 방식을 확인하거나 디버깅합니다. |
| 매칭 세터 | 없음 — SetROProperty는 없습니다. | 속성에 설정 |
대조를 통해 차이점을 명확히 구분할 수 있습니다. HTML ID가 없는 목록에 ID를 설정한 다음, 두 가지 방식으로 읽어보세요. GetROProperty는 애플리케이션이 변경되지 않았기 때문에 빈 문자열을 반환하는 반면, GetTOProperty는 설명에 새로 추가된 값을 반환합니다.
일반적인 오류 및 해결 방법
속성 검색 실패는 몇 가지 예측 가능한 이유로 발생합니다. 아래 표는 테스터들이 가장 자주 접하는 이유들을 나열합니다.
| 징후 | 원인 | 수정 |
|---|---|---|
| 해당 호출은 빈 문자열을 반환합니다. | 속성 이름이 잘못되었거나 객체가 해당 속성을 노출하지 않습니다. | 해당 객체를 다시 검색하고 나열된 속성 이름을 정확히 복사합니다. |
| GetROProperty 라인에서 개체를 찾을 수 없습니다. | 컨트롤이 아직 렌더링되지 않았습니다. | 읽기 작업 전에 동기화 단계를 추가하세요. |
| GetROProperty는 SetTOProperty 변경 사항을 무시합니다. | 두 방법은 설계상 서로 다른 대상을 다룹니다. | GetTOProperty를 사용하여 변경 사항을 다시 읽어오세요. |
| SetTOProperty 변경 사항이 사라집니다. | 테스트 객체 편집 내용은 현재 실행 동안에만 유효합니다. | 저장소에서 객체를 편집하거나 다음을 사용하세요. 설명 프로그래밍 |
| SetROProperty 함수에서 구문 오류가 발생합니다. | 그러한 방법은 존재하지 않습니다. | 설정 또는 클릭과 같은 일반적인 단계를 통해 애플리케이션을 실행하세요. |
이러한 문제 대부분을 방지하는 두 가지 습관은 다음과 같습니다. 속성 이름을 추측하는 대신 코드를 작성하기 전에 컨트롤을 미리 확인하고, Vbscript 값이 필요한 단계 직전에 값을 가져오는 호출이 이루어지므로, 읽기가 수행될 때 객체가 여전히 화면에 표시됩니다.
