2011-09-29 3 views
1

이 질문은 매우 기본적인 질문 일 수 있지만 최근에 QTP를 사용하기 시작했으며 몇 가지 사항을 여전히 고수하고 있습니다. 지난 두 시간 동안 나는 이것에 대한 해답을 찾고 있었지만 지금까지는 운이 없다.QTP에서 브라우저 개체의 전체 구조는 무엇입니까?

내 질문 :
는 QTP 코드에서 우리가 일반적으로 쓰기 :이 브라우저 객체에서오고 정확히 x와 y있는 위치를 이해하려는

Browser("x").Page("y").Navigate("url") 

.
1) VBScript의 일부입니까, 아니면 QTP의 일부입니까?
2) 또한이 개체 구조에 대한 세부 정보는 어디서 얻을 수 있습니까? 나는 "페이지"외에도 "탐색"외에 쓸 수있는 것이 무엇인지 알고 싶습니다.

답변

1

실제로 브라우저 개체는 현재 열려있는 모든 브라우저 창과 탭의 모음을 나타냅니다.이 같은 이름이나 설명하여 특정 하나를 지정합니다

"웹 사이트"중 특정을 설명하는 객체 저장소에 명명 된 "브라우저 객체", 또는 교대 설명 (문자열 또는 개체)입니다
Browser("website") 

창/탭을 선택하십시오.

Page 객체는 위에서 언급 한 브라우저가로드 한 가능한 모든 페이지의 모음을 나타냅니다. 콜렉션의 인스턴스는 오브젝트 저장소의 "페이지 오브젝트"에 해당합니다. 특히 실제 브라우저 창 주어진/탭은 주어진 순간에로드 ONE 실제 페이지를 가질 수 있다는 사실을 고려,이 개념은 매우 혼란 스러울 수 있습니다

Browser("website").Page("Logon Page") 

:이 같은 이름이나 설명하여 특정 일을 지정합니다. 즉, Browser ("웹 사이트")의 실시간 하위 객체를 반복하는 경우 항상 하나만 존재합니다.

이 브라우저/페이지 관계를 생각하는 가장 좋은 방법은 올바른 은유를 사용하는 것입니다. 처음 QTP 프로그래밍을 시작했을 때 IE, Chrome, Firefox 등의 브라우저 객체를 생각하는 것이 가장 좋았을 것 같았고 그런 방법으로 객체 리포지토리 객체를 관리하려고 시도했지만 엄청난 혼란을 겪었습니다. 하나의 웹 사이트를 대상으로 저장소의 브라우저 객체의

생각한다

는 지금 브라우저를 구성하는 가장 좋은 방법은 객체 저장소에 객체를이 방법을 이해합니다. Amazon.Com MSN.Com StackOverflow.Com LifeHacker.Com 등.

리포지토리의 페이지 개체를 웹 사이트 개체의 명확한 단일 페이지로 생각하십시오. 웹 사이트가 다른 페이지에 대해 다른 컨트롤을 사용하여 표시 할 수있는 경우 브라우저 객체 아래에 별도의 Page 객체를 만들어야합니다. 저장소는 다음과 같이 보일 수 있습니다.

여기서 아이디어는 해당 페이지에서만 발생하는 제어 개체를 포함하는 논리 페이지를 만드는 것입니다. 이 일을하기 위해 까다로운 물건 이제

...

, 우리는 때 그들이해야 브라우저와 페이지 객체는 실제로 "존재"확인해야합니다. 브라우저 객체의 경우 브라우저 탭에 ANY 페이지가로드 될 때마다 "존재"해야합니다. 페이지 객체의 경우 해당 웹 사이트의 해당 페이지가로드 될 때만 "존재"해야하며 특정 컨트롤은 화면에 표시됩니다.

즉, 웹 사이트의 페이지가 현재로드되어 있어도 브라우저 개체로 웹 사이트를 올바르게 식별 할 수 있도록 브라우저 개체의 식별 속성을 신중하게 편집해야합니다.

예를 들어 ... 내 작품에는 "무역"이라는 웹 사이트가 있습니다. 브라우저는 일반적으로 "name:=Trade"을 사용하여 안정적으로 찾을 수 있지만 로그인 페이지는 약간 다릅니다. 이름은 "Trade to Welcome"입니다. 따라서 웹 사이트 개체를 작동 시키려면 다음과 같은 식별 속성에서 정규 표현식을 사용합니다. 이 : "name:=(?:Welcome to Trade|Trade)". 이 방법은 동일한 브라우저 객체가 두 이름 중 하나가 발견되면 "존재"한다고 말합니다. 이 방법으로 로그인 페이지 만 포함 된 브라우저 객체로 객체 저장소를 복잡하게 만드는 대신 전체 웹 사이트 객체의 일부로 로그인 페이지를 포함 할 수 있습니다. 나중에 코드를 읽는 것을 더 짜증나게 만들고 WITH 블록의 사용을 복잡하게 만듭니다.

또 다른 문제점은 페이지 객체가 종종 구별하기 어렵다는 것입니다.로드 된 URL은 동적 일 수 있으며 페이지 제목은 한 페이지에서 다른 페이지로 전혀 변경되지 않을 수 있습니다. 이 문제를 해결하기 위해 객체 저장소의 내 페이지 객체에 추가 식별 속성을 추가합니다. 예를 들어 수동으로 URL 속성을 추가 한 다음 정규식을 사용하여 다음과 같이 URL 내의 특정 태그를 봅니다. "URL:=https://TradeTools-(?:SIT|UAT).*userLogin.*" This 필수 title 속성에 추가 될 것은 ...

  1. 브라우저 및 페이지 (필수 속성을 제거하지 않거나 녹화 엔진이 제대로 기록 할 수 없게됩니다 결코)보다 직접적으로이 질문에 대한 답을

    그래서, 객체는 QTP의 일부입니다. QTP는이 API 을 제공하고 있으며 VBScript를 사용하여 (터치하거나 사용하거나 조작합니다). 브라우저 및 페이지 클래스가 QTP 외부에 존재하지 않습니다.

  2. 브라우저 및 페이지 개체에 사용할 수있는 전체 메서드 및 속성 목록을 QTP/UFT 도움말 파일에서 얻을 수 있습니다. 또한 읽을 수 있습니다 : http://community.hpe.com/t5/All-About-the-Apps/Understanding-the-web-test-object-model-in-HP-Unified-Functional/ba-p/6168133#.Vvp0V-IrK03

이 정보가 도움이되기를 바랍니다. 일단 브라우저/페이지에 대한 이해를 여기에 설명 된 은유로 전환하면 QTP로 내 능력이 크게 향상되었습니다.

+0

좋은 답변입니다! 내 질문에 대한 답변으로 표시하고 있습니다. 현재 QTP를 더 이상 사용하지는 않지만 (이 질문은 거의 5 년 후에 나왔습니다.) 그럼에도 불구하고 주제에 대한 통찰력과 개인적인 이해를 공유해 주셔서 감사합니다. :) – Mugen

+0

감사합니다. 나는 그것을 써야했고, 당신의 질문은 완벽했고 답이 없었습니다. 그래서 다른 누구라도 그 질문을 검색하면 제 대답을 찾을 수 있도록 대답하기로했습니다. –

2

예에서 "x"및 "y"는 Object Repository의 논리 이름을 나타냅니다. 그래서 질문 # 1에 대답하기 위해, 이것은 VTPcript가 아니라 QTP의 일부입니다. Object Repository는 VBScript 코드의 논리 이름을 런타임에 개체를 식별하는 실제 세부 정보와 매핑하는 중개입니다. 그것은 단지 추상화입니다.

일반적으로 도구에 대한 공식 교육을받는 것이 좋습니다. 이런 종류의 문제에 관한 교육은 대부분의 질문에 답할 것입니다. 또한 웹에는 수많은 자습서가 있습니다. 마지막으로 도움말 가이드는 많은 기본 사항을 안내합니다.

+0

답장을 보내 주셔서 감사합니다. 누군가가 나를 "브라우저"와 "페이지"에 대해 설명하는 자습서로 안내 할 수 있다면 좋을 것입니다. 나는 그 (것)들에 세부 사항 더를 찾기 위하여 많은 시간을 소요했다. – Mugen

5

Browser 테스트 개체는 탭 브라우저의 단일 탭을 나타냅니다.

QTP 테스트 개체를 반환하는 Browser 함수를 호출

은 보통이 (당신의 "x" 예에서와 같이) 관련 객체 저장소에서 해당 이름을 가진 브라우저이지만 새로운 테스트 개체를 만들 descriptive programming를 사용할 수 있습니다.

것은 하위 요소의 호출 할 때 Browser 당신이 (모든 테스트 오브젝트와 같은) 두 가지 옵션

  1. 전화 테스트 객체의 방법이있다. 테스트 개체가 지원하는 메서드 목록은 QTP의 설명서에서 확인할 수 있습니다.
  2. 자식 (오브젝트 리포지토리 (또는 설명 적 프로그래밍)의 테스트 개체). 이것은 귀하의 견본에 해당됩니다. Browser의 자녀는 거의 항상 Page이지만 Window이나 다른 개체가 나타날 수 있습니다 (테스트중인 응용 프로그램에 따라 다름).

Page 테스트 객체는 Browser에 표시되는 최고 수준의 HTML 문서를 나타냅니다.

동의어, 작성한 코드 스 니펫이 잘못되었습니다. PageNavigate 메서드를 지원하지 않으므로 Browser입니다.

관련 문제