2017-04-08 4 views
2

iOS 앱 자동화 용 Appium을 사용하기 시작했습니다. 개발자는 자동화 엔지니어를 돕기 위해 앱 코드의 모든 요소에 ID와 이름을 넣었지만 Appium을 사용하여 검사 할 때 어떤 것도 표시하지 않습니다. 접근성 ID, 값, 이름, 레이블에 표시된 텍스트 만 표시합니다.내게 필요한 옵션 ID, 값, 이름, 레이블에 표시된 텍스트가 동일한 Appium XCUIElement

Appium을 사용하여 이러한 ID와 이름을 자동화에 사용할 수 있도록 개발자에게 무엇을 요청해야합니까?

답변

1

개발자에게 요소에 대한 액세스 가능성 ID를 설정하도록 요청해야합니다.

내 조언은 개발자에게 액세스 가능성 ID를 요소의 값과 정확히 일치하는 것으로 변경하도록 요청해야한다는 것입니다. 예를 들어, "Open"이라고 표시된 단추가있는 경우 일부 개발자는 그것은 id "Open"입니다. 액세스 가능성 ID를 "open"또는 "openID"로 설정하도록 요청해야합니다. 이렇게하면 모든 요소에 접근성 ID가 있는지 확인하고 누락 된 ID를 쉽게 발견하고 개발자에게 추가하도록 요청할 수 있습니다.

1

요소의 접근성 ID가 될 요소의 레이블에 주어진 값이 무엇이든간에. 접근성 ID는 화면에 보이는 텍스트 일뿐입니다. 위에 표시된 예에서 이름이나 레이블은 요소의 액세스 가능성 ID

driver.findElement(By.ID(“Drive”)).click(); 
driver.findElementByAccessibilityId(“Drive”).click(); 
driver.findElement(By.name(“Drive”)).click(); 
driver.findElementByName(“Drive”).click(); 

위의 예에서 "드라이브"는 레이블 또는 이름 일 수 있습니다. Appium은 먼저 일치하는 액세스 가능성 ID를 검색합니다. 아무것도 발견되지 않으면 요소 레이블에 문자열 일치가 시도됩니다. 마지막으로, 전달 된 ID가 지역화 키이면 현지화 된 문자열을 검색합니다.

개발자에게 모든 요소에 레이블을 지정하도록 요청하면 해당 레이블이 해당 요소의 접근 가능성 ID가됩니다.

1

내가 경험 한 바에 따르면, iOS 앱의 요소에 accessiblity/name 속성을 제공하기 위해 식별자 필드가 필요하다는 것을 알게되었습니다.

그럼 당신은

@iOSFindBy(accessibility = "myid") 
public MobileElement SOME_OBJECT; 

또는

driver.findElementByAccessibilityId("myid") 

참고로 요소를 식별 할 수 있습니다 : 화면에 표시되는 실제 값보다 우선합니다 필드 레이블을 어떤 가치를 제공. 따라서 일반적으로 Label 필드에 값을 제공하지 마십시오. 이렇게하면 element.getText()를 통해 모든 요소에서 보이는 텍스트를 가져올 수 있습니다.

enter image description here

또한, 자사의 중요한 이해하는 식별자의 값이 유일하게 필요한 객체에 부여해야하는 이유.

예를 들어 Btn Previous 또는 Btn과 같은 요소를 식별하려면 식별자 값을 Header 또는 View (상위 개체)에 할당하지 않아야합니다. 부모에게 가치를 제공하면 하위 요소에 대한 식별자가 표시되지 않습니다.

enter image description here