Mercury Quick Test Pro 및 가상 머신:한 클라이언트 컴퓨터에서는 작동하지만 다른 클라이언트 컴퓨터에서는 작동하지 않습니다.

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

  •  01-07-2019
  •  | 
  •  

문제

Mercury Quick Test Professional 9.2가 설치된 가상 머신(VMware)이 있습니다.Infragistics 라이브러리를 사용하여 VB.NET으로 작성된 응용 프로그램을 테스트하는 스크립트가 있습니다.

내 노트북을 사용하여(원격 데스크톱 사용) 이 가상 머신에 액세스하면 모든 것이 잘 작동하고 스크립트가 문제 없이 완료됩니다.내 노트북은 Windows Classic 테마로 XP를 실행합니다.

다른 컴퓨터(원격 데스크톱 사용)를 사용하여 이 가상 컴퓨터에 액세스하면 스크립트가 정상적으로 시작되지만 QTP의 오류 메시지 없이 중간에 중지됩니다.이 컴퓨터는 Windows 클래식 테마로 XP를 실행합니다.

두 설정의 한 가지 차이점은 화면 크기입니다. 노트북은 1920x1280이고 다른 컴퓨터는 1280x1024입니다.

스크립트가 중지되는 단계에는 UltraWinGrid 내의 확인란을 선택하는 작업이 포함됩니다.두 경우 모두 확인란 자체가 화면에 표시됩니다.

이전에 이런 문제가 있었던 사람이 있습니까? 아니면 두 시스템 간에 동작이 다른 이유를 아는 사람이 있습니까?

감사해요.

도움이 되었습니까?

해결책

좋아요.문제를 발견했습니다.사실, 스크립트를 쓴 사람이 그렇게 하라고 했기 때문에 스크립트는 조용히 실패하고 있었습니다.화면 밖에 있는 것을 확인할 수 없어 스크립트가 실패했습니다.

문제는 '오프 스크린'에 대한 QTP 정의였습니다.내 노트북에는 두 개의 화면이 연결되어 있습니다. 노트북 자체용 화면(1920x1200)과 다른 화면(1280x1024)입니다.원격 데스크톱을 사용하여 QTP용 VM에 연결하고 노트북 화면 설정을 사용합니다.이는 QTP 스크립트를 실행하고 다른 화면으로 이동할 때 맞지 않아 화면이 더 이상 최대화되지 않고 개체가 부분적으로 화면 밖에 있어서 찾을 수 없음을 의미합니다.

수정은 간단합니다.원격 데스크톱에서 디스플레이 탭을 사용하여 화면 크기를 1280x1024로 설정하면 QTP에 더 이상 문제가 없습니다.

짜잔.

다른 팁

전문가 모드를 사용하지 않거나 QTP가 저장소 개체를 생성하는 대부분의 작업을 수행하도록 허용하는 경우 예, 모든 것을 픽셀로 참조합니다.

나는 소스를 보고(자동화된 웹 애플리케이션 테스트의 경우) 필요한 경우 도움을 받기 위해 Object Spy를 사용하여 모든 저장소 객체를 직접 생성합니다.나는 당신이 겪고 있는 바로 그 이유 때문에 내 객체 정의의 일부로 위치 정보를 갖지 않는다는 점을 강조합니다.

Windows와 상호 작용하는 웹 앱 부분(업로드할 파일 열기 등)의 경우 저장소 개체를 생성하기 위한 고유 식별자를 만드는 데 필요한 시행착오를 위해 개체 스파이가 필수적이었습니다.하지만 그것은 가능합니다.

예1:파일 찾아보기 대화 상자
text = "파일 선택"
Nativeclass = #32770 (분명히 파일 열기 대화 상자에 대한 일부 Windows VooDoo인가요?)

예2:찾아보기 대화 상자의 파일 이름 텍스트 상자:
Nativeclass = "편집"
첨부된 텍스트 "파일 이름:"(추가 Windows VooDoo?"&" 없이는 작동하지 않습니다)

예3:대화 상자의 열기 버튼:
text = "열기(&O)"
객체 클래스 = "버튼"

행운을 빌어요!

설명 포인트:오류 메시지 없이 QTP가 중지된다고 언급하셨습니다.이는 테스트 결과 로그 파일에도 오류 메시지가 없다는 의미이기도 합니까?로그에 정보가 있으면 문제를 진단하는 데 도움이 될 수 있습니다.스크립트가 실패하는 지점의 코드 줄을 공유해 주실 수 있나요?

또한 원격 데스크톱은 원격 컴퓨터의 데스크톱 크기를 조정합니다.QTP 스크립트는 본질적으로 좌표 기반이 아니지만 개별 명령문은 객체를 기준으로 좌표 기반이 될 수 있습니다.그런 점에서 결의안이 문제가 될 수 있습니다.예를 들어, 더 높은 해상도의 컴퓨터에 Button.Click(5, 150) 과 같은 줄이 기록되어 있다고 가정해 보세요.그러나 저해상도 컴퓨터에서 재생을 시도했는데 150이 저해상도 개체의 범위를 벗어나면 문제가 발생할 수 있습니다.

QTP는 ~ 아니다 개체가 상위 수준 개체로 식별되는 경우 최후의 수단을 제외하고 화면 좌표를 사용합니다(SwfTable 이 경우) 괜찮습니다. 그러나 QTP가 대체 대상 개체를 인식하지 못하는 경우 WinObject 그리고 화면 좌표.

Infragistics를 사용하고 있다면 그들이 QTP의 지원을 확장한다는 것을 알아야 합니다. 테스트이점 아마도 귀하의 문제를 해결할 제품입니다.


편집하다: @MatthieuF 말했다:

실제로 우리는 QTP용 Infragistics 플러그인을 사용하고 있는데 여전히 문제가 있습니다.

실패한 라인의 예를 들어주실 수 있나요?

몇 가지:

VM에서 쉽게 디버깅할 수 있어야 합니다. 중지될 때까지 기다렸다가 개체 저장소로 이동하여 개체를 식별할 수 있는지 확인하세요.그렇지 않다면 객체 스파이를 사용하여 OS 간에 어떤 속성이 다른지 알아보세요.차이점이 있는 경우 언제든지 해당 속성을 정규식으로 설정하고 두 가지 가능성을 모두 확인하도록 할 수 있습니다.

이것이 문제가 아니라고 가정하면 원격 창이 닫히거나 최소화된 경우 QTP가 있는 원격 데스크톱을 사용하는 데 문제가 발생합니다.우리로서는 RDP 창이 보이지 않을 때 클립보드를 변경할 수 없는 문제였지만, QTP를 그런 식으로 사용하면 또 다른 놀라움이 있을 수 있습니다.

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