두 개의 동일한 요소가 "표시"되고 "활성화"되어 있지만 실제로는 하나만 표시되는 경우 구별
현재 네이티브 앱에 대한 테스트를 자동화하고 있으며 "고스트"요소에 몇 가지 문제가 있습니다. "고스트 요소"란 코드에 있고 기술적 으로 페이지에 있지만 사용자에게는 보이지 않는 요소를 의미합니다 .
Android를 사용하여 테스트 중이며 iOS에도 문제가 있는지 모르겠습니다.
간단히 말해 X 요소를 클릭하고 싶지만 X와 Y가 동일한 사양 (같은 텍스트, 동일한 요소 유형 / 클래스)을 공유하기 때문에 사용자에게 보이지 않는 요소 Y 를 클릭하게됩니다 .
"isDisplayed ()"및 "isEnabled ()"를 사용하여 요소 Y를 무시하려고 시도했지만 X와 Y가 모두 표시되고 활성화 된 것처럼 보입니다 (실제로 X 만 사용자에게 표시되지만).
하나는 사용자에게 보이고 다른 하나는 보이지 않는다는 사실을 사용하여 X와 Y를 구별 할 수있는 방법이 있습니까? 가능하다면 개발자에게 앱의 코드를 변경하도록 요청하고 싶지 않습니다.
도움이된다면 다음은 앱이 "유령 요소"로 끝나는 방식입니다.
1 페이지를 연 앱, 1 페이지에 요소 Y가 있습니다.
2 페이지, 2 페이지를 여는 앱은 1 페이지와 다르지만 1 페이지의 요소 Y와 동일한 요소 X가 있습니다.
이제 2 페이지에 있지만 1 페이지는 사라지지 않고 2 페이지의 "뒤"에 있습니다.
나는 발견 이 와 그 같은 문제에 대해 것 같다 사람,하지만 그것을 해결하는 방법에 대한 해결 방법이 없습니다.
추신 : Java를 사용하고 있지만 모든 언어로 답변을받습니다.
답변
UI에는 특정 계층 구조가 있고 일반적으로 개체 계층 구조에는 XML과 같은 정렬 된 구조가 있다고 생각합니다. 즉, 요소를 추가 할 때 임의의 위치에 추가하는 것이 아니라 특정 위치에 추가하는 것입니다. 일반적으로 외부 용기의 상단 또는 하단입니다.
따라서 다음과 같은 구조가 있다고 가정합니다.
<app>
<page>
<element>bottom</element>
</page>
<page>
<element>top</element>
</page>
</app>
추가 된 새 페이지가 상단에 추가되면 다음을 통해 액세스 할 수 있습니다. /app/page[1]/element
추가 된 새 페이지가 하단에 추가되는 경우 다음을 사용하여 액세스 할 수 있습니다. /app/page[last()]/element