胡闹的问题。 java.lang.ClassCastException:使用sameAs()方法时

|| 我从源代码构建SDK。 我想使用以下脚本:
img=MonkeyRunner.loadImageFromFile(path=\'/home/alsu/monkeyrunner/device.png\')
img_1=device.takeSnapshot()

img_1.sameAs(img, 1)
但是会发生此错误:
File \"/home/semc/monkey/out/host/linux-x86/sdk/android-sdk_eng.semc_linux-x86/tools/test.py\", line 23, in <module>
    if img_1.sameAs(img,1):
    at com.android.monkeyrunner.MonkeyImage.sameAs(MonkeyImage.java:138)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)

java.lang.ClassCastException: java.lang.ClassCastException: org.python.core.PySingleton cannot be cast to com.android.monkeyrunner.core.IMonkeyImage
请帮忙。     
已邀请:
MonkeyImage.sameAs()刚刚损坏-传递给它什么都没有关系,您会收到该错误。 解决方法:使用convertToBytes():
new_snap = device.takeSnapshot()
old_snap = MonkeyRunner.loadImageFromFile(control_dir + \'/\' + test_name + \'.png\')
#if new_snap.sameAs(old_snap) == True:
new_bytes = new_snap.convertToBytes(\'png\')
old_bytes = old_snap.convertToBytes(\'png\')
if new_bytes == old_bytes:
    print \'Test \' + test_name + \' PASSED\'
else:
    print \'Test \' + test_name + \' FAILED\'
更新:2011年10月27日:比较快照部分 根据kaciula的评论,这是用于从快照中删除状态栏的代码:
device = MonkeyRunner.waitForConnection(emulator)
width = int(device.getProperty(\'display.width\'))
height = int(device.getProperty(\'display.height\'))
density = device.getProperty(\'display.density\')
if density == .75:
    density_dir = \'ldpi\'
    snap_rect = 0, 19, width, height - 19
elif density == 1.5:
    density_dir = \'hdpi\'
    snap_rect = 0, 38, width, height - 38
elif density == 2.0:
    density_dir = \'xhdpi\'
    snap_rect = 0, 50, width, height - 50
else:
    density_dir = \'mdpi\'
    snap_rect = 0, 25, width, height - 25
new_snap = device.takeSnapshot()
new_snap = new_snap.getSubImage(snap_rect)
    
SDKTools修订版12存在相同的问题。 SDKTools修订版15的更新为我解决了此问题。     
对不起,这个问题。此更改应解决此问题: https://review.source.android.com/#/c/25618/     
我在其他地方也有类似的问题。代替img_1.sameAs(img,1)尝试img_1.sameAs(img,1.0)。 sameAs()函数采用浮点值。没关系,因为它是python ...但它是Jython-凡是python和java都最糟糕的地方;-)     
sameAs
可以正常工作,直到将图像文件移动到另一个文件夹并再次加载。奇怪的错误... 以后编辑: 我想我已经深入到此。问题似乎是当文件名无效时,“ 5”未给出错误。 例如,像“ 6”之类的东西就可以正常工作,但是像“ 7”之类的东西就不能工作。原因很简单:
\\t
是一个特殊的序列。 解决方案是使用
\\\\\\
/
作为文件夹分隔符。     
使用ѭ11时,我也面临类似的问题。我的问题是由三个原因引起的: 两张图像的分辨率不同,因此
sameAs
函数在运行时会中断。 图片路径错误。即使我走错了路,
loadImageFromFile()
也从来没有向我们提及。因此,我们应该确定此路径是否正确。 SDK版本不良。就我而言,我使用了SDK_r23。     

要回复问题请先登录注册