2012-12-21 3 views
1

텍스트보기를 찾고 해당 좌표를 가져 와서 클릭하는 스크립트가 있습니다. 클릭하기 위해서는 스크롤하고 텍스트보기를 찾아야합니다. 스크립트는 드래그 않는monkeyrunner를 사용하여 텍스트를 식별 할 수 없습니다.

text = 'abc' 
self.device.drag((400,600), (300, 200), 0.01, 120) 
tv = self.vc.findViewWithText(text) 
if tv: 
    (x, y) = tv.getXY() 
    print >>sys.stderr, "Clicking TextView %s @ (%d,%d) ..." % (text, x, y) 
    tv.touch() 
else: 
     print "Text is not found" %text 

, 다음과 같습니다. 텍스트 'abc'가 있지만 "텍스트를 찾을 수 없습니다"라는 메시지가 인쇄됩니다.

drag() 메서드를 제거하고 수동으로 끌기를 수행하면 잘 동작하고 (텍스트 식별 및 클릭).

누구든지 내 drag() 메소드에 문제가 있는지 알 수 있습니까?

감사

답변

1

AndroidViewClient.dump()는 현재 화면에 표시되는 내용을 덤프, 그래서 당신이 첫 번째 (암시)에 없을 것이다 TextView 볼을 스크롤해야하는 경우 덤프. 는 따라서 스크롤 한 후 다시 덤프 있습니다

text = 'abc' 
self.device.drag((400,600), (300, 200), 0.01, 120) 
MonkeyRunner.sleep(3) 
self.vc.dump() 
tv = self.vc.findViewWithText(text) 
if tv: 
    (x, y) = tv.getXY() 
    print >>sys.stderr, "Clicking TextView %s @ (%d,%d) ..." % (text, x, y) 
    tv.touch() 
else: 
     print "Text is not found" %text 

또는

text = 'abc' 
self.device.drag((400,600), (300, 200), 0.01, 120) 
MonkeyRunner.sleep(3) 
self.vc.dump() 
self.vc.findViewWithTextOrRaise(text).touch() 

는 또한 accout로 수면에 대해 NRP에 의해 언급 된 점을.

+0

감사합니다. dtmilano .. seld.vc.dump()를 추가하고 정상적으로 작동했습니다. –

0

MonkeyRunner를 실행하고있을 모든 명령 매우 빠른 그래서 당신이보기를 찾는 시작하기 전에 잠을 추가해야 할 시간. 그래서 당신의 코드는 같을 것이다.

text = 'abc' 
self.device.drag((400,600), (300, 200), 0.01, 120) 
MonkeyRunner.sleep(1) 
tv = self.vc.findViewWithText(text) 
if tv: 
    (x, y) = tv.getXY() 
    print >>sys.stderr, "Clicking TextView %s @ (%d,%d) ..." % (text, x, y) 
    tv.touch() 
else: 
     print "Text is not found" %text 
관련 문제