2016-08-25 3 views
0

응용 프로그램을 자동화하려고합니다 (Windows 기반). 그것은 기록과 재생이었다. Squish는 열어서 내 응용 프로그램에 로그인 할 수 있지만 홈 화면에서 탭을 클릭하려고 할 때 객체를 식별 할 수 없다는 메시지가 나타납니다. 동적으로 변경되는 개체를 인식하지 못합니다.

코드의 조각 : 멈출 결국

mouseClick(waitForObject(": .ND - New Declaration_ListViewItem_18")); 

새로운 윈도우 내가 인식되지 않은 객체를 선택할 때, 내가 개체가 있음 "picknewobject"을 참조하라고 요청하는 팝업 id가 동적으로 변경되었습니다. 예 : "ND - New Declaration_ListViewItem_18"이 "ND - New Declaration_ListViewItem_19"로 변경되는 식입니다.

+0

를 참조하십시오

마우스 클릭 ("{? TYPE = 'MenuItem의'텍스트 = '파일'}") 내가 당신을 생각 그러면 여기에서 답을 찾을 수 있습니다 : http://blog.froglogic.com/2014/08/squish-tip-of-the-week-how-to-find-and-use-dynamic-objects/ – EugenG

+0

또는 귀하의 탭 부모 개체가 있습니다.객체의 자식을 읽고 이름을 원하는 객체와 비교) – EugenG

답변

0

: .ND - New Declaration_ListViewItem_18과 같이 waitForObject으로 전달 된 콜론 (:)으로 시작하는 문자열은 그 자체로 의미가 없습니다. 그것들은 소위 객체 맵에서 룩업 (lookup)을 수행하는 데 사용되는 심볼릭 식별자 (Squish에서는 "심볼 이름"이라고 함) 일뿐입니다. 오브젝트 맵은 각 기호 이름을 "실제 이름"과 연관 시키며 실제 이름은 실제로 오브젝트가 식별되는 특성을 정의합니다.

그래서 Squish가 기존의 (그리고 아마도 일치하는) 이름을 다시 사용하지 않고 새로운 이름을 생성하는 경우 객체 맵을보고 : .ND - New Declaration_ListViewItem_18: .ND - New Declaration_ListViewItem_19과 관련된 실제 이름을 확인해야합니다. 실제 이름에는 휘발성 속성이 포함될 수 있습니다. 응용 프로그램을 실행할 때마다 값이 변경되는 속성

0

가끔씩 우리가 이것을 실행하면 특정 테스트 실행에서 객체에 액세스 할 때마다 새 객체를 얻게되기 때문입니다. 이러한 새로운 개체는 모두 동일한 속성을가집니다. 그래서 Squish는 "occurrence = 'n'"속성을 사용하여 후속 인스턴스를 참조하려고합니다.

이 문제를 안정적으로 해결하는 간단한 방법은 상위 개체 (인스턴스화 및 휴지통으로 처리되지 않는 안정적인 앱)를 사용하고 부모 개체의 구성 요소 계층 구조를 이름순으로 탐색하는 것입니다. 다시 상호 작용하는 것은 고유 한 이름을 가짐). 당신은이 작업을 수행하는 함수를 만들 수 있습니다

...

내 경험은 시험 언어로 자바 스크립트를 사용하여 Linux에서 Java에 대한 찌그러 뜨리고있다. 따라서 필자의 스크립트 예제가 도움이 될지 잘 모르겠습니다. 그러나 우리는 우리가 생성 한 "aut"네임 스페이스를 가지고 있으며 이름, 유형, 텍스트로 객체를 찾기 위해 Java 컴포넌트 계층을 위아래로 탐색하는 방법을 알고있는 네임 스페이스에 다양한 함수를 넣습니다 등

0

개체를 스파이로 지정하고 이러한 속성을 사용하여 마우스 클릭 이벤트를 수행하는 것이 좋습니다. 테스트를 쉽게 유지 관리 할 수 ​​있으며 와일드 카드를 사용하여 테스트를보다 강력하게 만들 수 있습니다.

예 :

startApplication ("주소록")

https://doc.froglogic.com/squish/5.1/rg-namelookup.html

관련 문제