내 UI 테스트에서는 화면 맨 위에 두 개의 UiObject 텍스트를 설정하고 화면 맨 아래에 세 번째 UiObject를 클릭합니다. 일부 기기 (예 : 5.0을 실행하는 Nexus 6)에서는 완벽하게 작동합니다. 텍스트가 설정되고 화면 하단의 UiObject가 계속 표시되며 성공적으로 클릭됩니다.UiAutomator 테스트에서 키보드 검색 또는 표시 안 함
다른 장치 (예 : 4.4를 실행하는 Nexus 4)에서 UiObjects에서 setText를 호출하면 소프트 키보드가 표시되어 소프트 키보드가 화면 하단에있는 세 번째 UiObject를 가려서 클릭되지 않게합니다.
키보드를 닫으려고 UiDevice.pressBack()
을 사용하는 것으로 생각했지만 키보드가 일부 장치에서는 보이고 다른 장치에서는 보이지 않는 것이 문제였습니다. 키보드를 표시하지 않는 장치를 다시 누르면 다른 동작이 발생하여 테스트가 실패하게됩니다.
나는 또한 해결책으로 UiDevice.pressEnter()
를 사용하는 것을 고려했다. 나는 이것이 보이면 키보드를 없애고, 그렇지 않다면 아무것도하지 않을 것이라고 생각했다. 문제는 UiAutomator가 테스트를 실행할 때 "Enter"버튼이 없으며 "다음"버튼이 있다는 것입니다. 이것은 코드에서 실제 UI 요소를 설정하는 방식과 반대입니다. 이 테스트를 수동으로 수행하면 키보드에 예상대로 "입력"단추가 표시됩니다. 그러나 UiAutomator가 "다음"버튼을보고 있기 때문에 그것이 실행중인 기능입니다. 포커스는 다음 UiObject로 전달되고 키보드는 계속 표시됩니다.
그래서 내가하지 않으려면 뒤로 버튼을 누르지 않아도 키보드가 보이면이를 취소 할 수 있습니다. 표시 여부를 결정하는 방법이 있습니까? 아니면 더 나은 아직, 그것을 처음에는 보여주지 않습니까?
코드에서 할 수있는 일이 있기를 바랬습니다. 테스트는 장치에서 실행되는 많은 중 일부일뿐입니다. 필자는 별도의 패키지에 광산을 넣고 테스트 전에 adb 명령을 실행 한 다음 나중에 키보드 패키지를 다시 활성화 할 수 있다고 생각합니다. 그것은 내가 바라는 바가 아니지만 가능한 최선의 선택 일 수 있습니다. 감사. –