首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用AndroidViewClient触摸/按下按钮/视图?

如何使用AndroidViewClient触摸/按下按钮/视图?
EN

Stack Overflow用户
提问于 2013-06-17 07:02:47
回答 1查看 6K关注 0票数 1

我有一个应用程序,我想运行猴子运行(使用安卓ViewClient)

我试图把我的观点定义为

代码语言:javascript
运行
复制
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"

我怎么设置根呢?像这样?

代码语言:javascript
运行
复制
  touchProject = vc.findViewByIdorRaise('id/projectNewGallery','id/projectMain')

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

我试图使用culebra工具,但我得到了以下错误。

代码语言:javascript
运行
复制
$ java -jar androidviewclient-2.3.16.jar culebra
ERROR: monkeyrunner was not found and Windows 7 does not support shebang in scripts.    Aborting.

我也尝试过这种方法(非->操作系统Windows 7)

代码语言:javascript
运行
复制
$ /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)

好的,我能够运行Windows:

代码语言:javascript
运行
复制
C:\android-sdk\tools>monkeyrunner -plugin C:\Android_Resources_Hassan\MonkeyRunner_KIneMaster\androidviewclient-2.3.24.jar test3_py.py

但我又犯了一个错误:

代码语言:javascript
运行
复制
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

我的脚本文件

代码语言:javascript
运行
复制
#! /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);

ID是否与XML android:id="+id/newProjectGallery“中定义的相同?

/在代码/

我收到了跟随错误

代码语言:javascript
运行
复制
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代码。但我又犯了同样的错误:

代码语言:javascript
运行
复制
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'

是什么引起的?请帮我~

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-18 03:10:42

我在您的代码片段中看到了几个错误(请查看此更正版本):

代码语言:javascript
运行
复制
vc = ViewClient(device, serialno)
vc.dump()
touchProject = vc.findViewByIdOrRaise('id/projectNewGallery')
touchProject.touch()

为了简化这个过程,您只需使用库莱布拉生成正确的脚本模板,稍后您就可以适应您的需要:当设备屏幕包含所需的视图时:

代码语言:javascript
运行
复制
$ culebra -VC -o myscript.py

编辑myscript.py以添加对touch()方法的调用并运行

代码语言:javascript
运行
复制
$ myscript.py

如果ID不可用,使用详细注释(-C)可以简化视图的标识。

更新

  1. 在你的第一个例子中,我想这个问题应该由我之前修正过的片段来解决。代码运行时,唯一的问题可能是您期望的ID不存在。记住,如果后端是UiAutomator,则没有ID,这是API >= 16的默认后端。
  2. java运行程序希望monkeyrunner在路径中。
  3. /cygdrive/c/Android_Resources_Hassan/MonkeyRunner_KIneMaster/AndroidViewClient-master/AndroidViewClient/bin/androidviewclient-2.3.22.jar似乎不存在。至少这是monkeyrunner的想法。也许您应该在Windows路径中使用\
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17142005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档