2011-02-25 6 views
1

Monkeyrunner 스크립팅 환경을 탐험하면서 다양한 이벤트를 테스트하여 내 앱을 적절하게 시뮬레이션 할 수 있는지 확인합니다. 특히 "끌기"기능에 사용 된 좌표에 대해 질문이 있습니다.Monkeyrunner "drag"명령이 잘못된 좌표를 사용합니까? 이거 버그 야?

Monkeyrunner가 연결되어 있지만 실행중인 앱이없는 경우 (즉, 홈 화면에 앉아있는 경우) 다음 명령을 입력하면 왼쪽에서 오른쪽으로 '스 와이프'이벤트를 모방하여 홈 화면 하나를 왼쪽으로 이동합니다.

device.drag((100,400),(500,400),0.15,5) 

이것은 훌륭하게 작동합니다.

이 명령은, 다음 ... 반대 방향으로

device.drag((500,400),(100,400),0.15,5) 

을 슬쩍을 생산해야 ...하지만 그렇지 않습니다.

그러나이 수행합니다

device.drag((400,400),(100,400),0.15,5) 

더이를 테스트하려면 내가 "MagicMarker" 응용 프로그램을 다운로드했습니다. 이렇게하면 이러한 다양한 터치 이벤트가 어디에서 발생하는지 정확히 알 수 있습니다. 분명히 내 앱을 사용하지 않는 한 스크린 샷을 찍을 수 없으므로 여기서 보는 내용을 설명해야합니다. 다행히도 이것을 확인하거나 내가 누락 된 단계를 말해 줄 수 있습니다.

device.drag((100,400),(500,400),0.15,5) 

이 명령은 ... 내 화면 중간을 가로 질러 왼쪽에서 오른쪽으로 수평 선을 그립니다. 정확히 모토로라 드로이드의 화면 중앙에 있습니다. 두 끝점 모두 양쪽 끝에 여백이 명확하게 표시됩니다.

이 명령 ... 반대 방향 (오른쪽에서 왼쪽으로)에 그려진 동일한 라인이어야

device.drag((500,400),(100,400),0.15,5) 

...을 오른쪽으로 100 픽셀만큼 오프셋 선을 그린다. 첫 번째 끝 점은 화면의 가장자리 또는 완전히 오프 스크린에 있습니다. 나는 말할 수 없다.

제가 당황한 이유는 좌표가 일관성이없는 것처럼 보입니다. 지점 (500,400)은 화면의 수직 중앙에 있고 왼쪽 - 오른쪽 끌기 이동에서 종점으로 사용되면 오른쪽에서 조금 벗어나지 만 오른쪽 - 왼쪽의 시작점으로 사용되면 완전히 오프 스크린 인 것처럼 보입니다 드래그 이동.

Monkeyrunner 환경의 버그 일 수 있습니다. 생각?

답변

4

여기에 2 개의 버그가 있습니다. 하나는 MonkeyRunner에, 다른 하나는 코드에 있습니다. Nexus S에서 테스트 중이며 화면 크기는 480x800입니다. 당신이 오른쪽으로 드래그 할 때

print device.getProperty('display.width'), device.getProperty('display.height') 

그래서, (X = 500에서) 마지막 세그먼트가 화면의 가장자리 떨어져 있습니다 : Driod 내가 이런 식으로 체크 그 크기에 매우 가깝습니다. 드래그가 끝나면 프레임 워크가 "위로"이벤트를 가져 오면 정상적으로 복구됩니다.

오른쪽으로 드래그하면 프레임 워크가 좋아하지 않는 첫 번째 세그먼트가 화면에서 벗어납니다. 스크린 아래에 "다운"이벤트가 있기 때문에 드래그를 완료하는 모든 이동 이벤트가 삭제됩니다.

이 작동해야처럼 드래그 하 :

device.drag((100,400),(400,400),0.15,5) 
time.sleep(0.5) 
device.drag((400,400),(100,400),0.15,5)

MonkeyRunner의 버그는 당신의 드래그 명령의 마지막 부분을 떨어이다. 그래서 화면에서 드래그를 끝내는 것처럼 보였지만 실제로는 그렇지 않았습니다. 이 문제는 여기에 있습니다 : https://review.source.android.com/21635

+0

자세한 답변을 보내 주셔서 감사합니다! 나는 내 자신의 화면 해상도가 무엇인지 깨닫지 못해 스스로를 차버린다. – Glenn