微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决胡闹的问题 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,height - 38
elif density == 2.0:
    density_dir = \'xhdpi\'
    snap_rect = 0,50,height - 50
else:
    density_dir = \'mdpi\'
    snap_rect = 0,25,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。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。