2013-06-17 3 views
1

У меня есть приложение, для которого я хочу запустить Monkeyrunner (с помощью Android ViewClient)Как нажимать/нажимать кнопку/Просмотр с помощью AndroidViewClient?

Я пытаюсь определить мой взгляд, как

Vc = ViewClient(device, serialno) 
vc.dump 
touchProject = vc.findViewByIdorRaise('id/projectNewGallery') 
touchProject.touch() 

Но я получаю ошибки: ->"com.dtmilano.android.viewclient.ViewNotFoundException: Couldn't find View with ID='id/projectNewGallery' in tree with root=ROOT"

Как я могу установить корень? как это ?

touchProject = vc.findViewByIdorRaise('id/projectNewGallery','id/projectMain') 

? ///////////////////////////////////////////////// //////////////////////////////////

Я пытаюсь использовать инструмент culebra, но я получаю следующая ошибка.

$ java -jar androidviewclient-2.3.16.jar culebra 
ERROR: monkeyrunner was not found and Windows 7 does not support shebang in scripts. Aborting. 

Я также попробовал этот путь (Non-притон OS -> Windows 7)

$ /cygdrive/c/android-sdk/tools/monkeyrunner.bat -plugin /cygdrive/c/Android_Resources_Hassan/MonkeyRunner_KIneMaster/AndroidViewClient-master/AndroidViewClient/bin/androidviewclient-2.3.22.jar culebra myscript.py 
Plugin file doesn't exist 
Usage: monkeyrunner [options] SCRIPT_FILE 

-s  MonkeyServer IP Address. 
-p  MonkeyServer TCP Port. 
-v  MonkeyServer Logging level (ALL, FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE, OFF) 

Ok я смог запустить Windows, CMD:

C:\android-sdk\tools>monkeyrunner -plugin C:\Android_Resources_Hassan\MonkeyRunner_KIneMaster\androidviewclient-2.3.24.jar test3_py.py 

, но я получил следующее ошибка снова:

130619 14:41:15.725:S [MainThread] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception 
130619 14:41:15.725:S [MainThread] [com.android.monkeyrunner.MonkeyRunnerOptions]Traceback (most recent call last): 
File "C:\android-sdk\tools\test3_py.py", line 71, in <module> 
touchProject = vc.findViewByIdOrRaise('id/projectNewGallery') 
File "C:\Android_Resources_Hassan\MonkeyRunner_KIneMaster\AndroidViewClient- master\AndroidViewClient\src\com\dtmilano\android\viewclient.py", line 1919, in findViewById 
OrRaise raise ViewNotFoundException("ID", viewId, root) 
com.dtmilano.android.viewclient.ViewNotFoundException: Couldn't find View with ID='id/projectNewGallery' in tree with root=ROOT 

мой файл сценария - -------------------

#! /usr/bin/env monkeyrunner 
''' 
Copyright (C) 2012 Diego Torres Milano 
Created on Feb 3, 2012 

@author: diego 
''' 


import re 
import sys 
import os 

# this must be imported before MonkeyRunner and MonkeyDevice, 
# otherwise the import fails 
try: 
ANDROID_VIEW_CLIENT_HOME = os.environ['ANDROID_VIEW_CLIENT_HOME'] 
except KeyError: 
print >>sys.stderr, "%s: ERROR: ANDROID_VIEW_CLIENT_HOME not set in environment" % __file__ 
sys.exit(1) 
sys.path.append(ANDROID_VIEW_CLIENT_HOME + '/src') 

from com.dtmilano.android.viewclient import ViewClient 


# Imports the monkeyrunner modules used by this program 
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 

#starting script 
print "start" 

# Connects to the current device, returning a MonkeyDevice object 
device, serialno = ViewClient.connectToDeviceOrExit() 


#device connected 
print "connection started" 

# sets a variable with the package's internal name 
package = 'com.example.app.myApp' 

# sets a variable with the name of an Activity in the package 
activity = 'com.example.mainapp.MainActivity' 

# sets the name of the component to start 
runComponent = package + '/' + activity 

# Runs the component 
device.startActivity(component=runComponent) 

#device set to sleep for 4 seconds 
print "wait for 4 seconds" 

# first screen shot event 
MonkeyRunner.sleep(4); 


vc = ViewClient(device, serialno) 
vc.dump() 
root = vc.getRoot() 

#touchProject = vc.findViewWithTextOrRaise('', root) 
touchProject = vc.findViewByIdOrRaise('projectNewGallery') 
touchProject.touch() 


# wait for screenshot to save 
MonkeyRunner.sleep(2); 


# Takes a screenshot 
result1 = device.takeSnapshot() 
     result1.writeToFile('/myPath/shot1.png','png') 


# wait for 3 seconds 
MonkeyRunner.sleep(3); 

это идентификатор такой же, как определено в XML андроида: ID = "+ Id/newProjectGallery"?

////////////////////// ПОСЛЕ добавления vc.traverse() в коде ///////////// //////

Я получаю следующее сообщение об ошибке

130620 10:07:43.775:S [MainThread] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception 
130620 10:07:43.775:S [MainThread] [com.android.monkeyrunner.MonkeyRunnerOptions]Traceback (most recent call last): 
File "C:\android-sdk\tools\test.py", line 71, in <module> 
    ViewClient(*ViewClient.connectToDeviceOrExit()).traverse(transform=ViewClient.TRAVERSE_CIT) 
    File "C:\Android_Resources_Hassan\MonkeyRunner\AndroidViewClient- master\AndroidViewClient\src\com\dtmilano\android\viewclient.py", line 1687, in traverse 
    print >>stream, "%s%s" % (indent, s) 
LookupError: unknown encoding 'ms949' 

Кроме того, я выбежала dump-simple.py код также. Но я снова получаю ту же ошибку:

130620 10:07:43.775:S [MainThread] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception 
130620 10:07:43.775:S [MainThread] [com.android.monkeyrunner.MonkeyRunnerOptions]Traceback (most recent call last): 
File "C:\android-sdk\tools\dump-simple.py", line 30, in <module> 
    ViewClient(*ViewClient.connectToDeviceOrExit()).traverse(transform=ViewClient.TRAVERSE_CIT) 
File "C:\Android_Resources_Hassan\MonkeyRunner\AndroidViewClient- master\AndroidViewClient\src\com\dtmilano\android\viewclient.py", line 1687, in traverse 
print >>stream, "%s%s" % (indent, s) 
LookupError: unknown encoding 'ms949' 

что вызывает это? Пожалуйста, помогите мне ~

Благодаря

+0

В коде есть некоторые проблемы с отступом, но я предполагаю, что они должны скопировать/вставить. Просто добавьте 'vc.traverse()' после 'vc.dump()', и все дерево будет напечатано, и вы увидите идентификаторы или уникальные идентификаторы ваших представлений. –

+0

Я попытался использовать vc.traverse() после vc.dump(). Я получаю ошибку, которую я разместил выше – Hassan

+0

Вы можете решить эту проблему, изменив кодировку в начале скрипта. Google для этой проблемы. –

ответ

0

Я вижу несколько ошибок в вашем фрагменте кода (проверить эту исправленную версию):

vc = ViewClient(device, serialno) 
vc.dump() 
touchProject = vc.findViewByIdOrRaise('id/projectNewGallery') 
touchProject.touch() 

упростить этот процесс, вы можете просто использовать culebra для генерации правильный шаблон сценария, который вы в дальнейшем сможете адаптировать к вашим потребностям: Когда экран устройства содержит нужные виды:

$ culebra -VC -o myscript.py 

редактировать myscript.py добавить вызов метода touch() и запустить

$ myscript.py 

Использование многословные комментарии (-C) упрощает идентификацию просмотров, если идентификаторы не доступны.

Update

  1. Вы были почти там в первом примере, я думаю, эта проблема должна быть решена моей скорректированного сниппета раньше. Прогон кода, единственная проблема может заключаться в том, что вы ожидаете идентификаторы, которых нет. Помните, что нет идентификаторов, если спина конец UiAutomator, который по умолчанию фоновый для API> = 16.

  2. Java-бегун ожидает monkeyrunner быть в PATH.

  3. Похоже, /cygdrive/c/Android_Resources_Hassan/MonkeyRunner_KIneMaster/AndroidViewClient-master/AndroidViewClient/bin/androidviewclient-2.3.22.jar не существует. По крайней мере, это то, что думает monkeyrunner. Возможно, вы должны использовать \ в путях Windows.

+0

использовать инструмент Culebra? Я получаю эту ошибку:/usr/bin/env: monkeyrunner: Нет такого файла или каталога (я использую систему Windows и могу запускать простой сценарий .py с помощью AndroidViewClient -> Запуск примера приложения/действия и запуска, например параметров. py) – Hassan

+0

Как вы запустили culebra? –

+0

Итак, первая часть ответа решила вашу проблему? –

Смежные вопросы