如何缩放Android MonkeyRunner的触摸事件坐标以支持具有相同脚本的多个设备?

如何缩放Android MonkeyRunner的触摸事件坐标以支持具有相同脚本的多个设备?,android,touch,automated-tests,monkeyrunner,androidviewclient,Android,Touch,Automated Tests,Monkeyrunner,Androidviewclient,我正在尝试编写一个monkeyrunner脚本,它将为企业用户自动安装mdm软件。该脚本将使用多个设备执行,因此具有多个屏幕大小和密度 是否有方法从设备a获取参考坐标,并对其进行缩放,以便将其应用于其他设备?我首先从一个参考设备(在本例中是一个屏幕密度为1.5的480 x 800显示屏的三星Galaxy S2)获取初始触摸坐标,然后在运行时根据设备计算缩放坐标。但是,屏幕显示为720 x 1184(软键去除了一些高度)且屏幕密度为2的RAZR Maxx HD无法使用此方法 是否有人对打包算法有更

我正在尝试编写一个monkeyrunner脚本,它将为企业用户自动安装mdm软件。该脚本将使用多个设备执行,因此具有多个屏幕大小和密度

是否有方法从设备a获取参考坐标,并对其进行缩放,以便将其应用于其他设备?我首先从一个参考设备(在本例中是一个屏幕密度为1.5的480 x 800显示屏的三星Galaxy S2)获取初始触摸坐标,然后在运行时根据设备计算缩放坐标。但是,屏幕显示为720 x 1184(软键去除了一些高度)且屏幕密度为2的RAZR Maxx HD无法使用此方法

是否有人对打包算法有更深入的了解,以便一个设备的坐标可以用于任何设备


我确实考虑过使用AndroidViewClient直接访问视图的按钮,但由于脚本是为企业最终用户设计的,因此由于设备安全,无法使用它。

不幸的Windows行为。您可以在
viewclient.py
(第952行附近)中修改这些行,使测试短路:


虽然是临时解决方法,但它将解决您的问题(直到Windows修复:-)。

AndroidViewClient可以在API>15(UiAutomator后端)的安全设备上使用,谢谢。我买了一台API>15的设备。我现在遇到的似乎是os.access将adb.exe路径作为可执行文件查找时出现的问题。os.access(r'C:\Android\Android sdk\platform tools\adb.exe',os.F_OK)返回true,但os.access(r'C:\Android\Android sdk\platform tools\adb.exe',os.X_OK)返回false。在交互模式下通过解释器执行时返回true,但作为脚本的一部分并通过monkeyrunner.bat启动时返回false。因此,ViewClient总是失败,因为它认为ANDROID_HOME没有设置。这是一种解决方法:)你有关于windows bug的更多详细信息吗?既然Windows将读取访问视为读取和可执行,那么该错误实际上是在Windows中还是在Jython中作为函数到操作系统映射的一部分?顺便问一下,您是否考虑过将serialno作为可选参数?仅针对仅连接一个设备的情况?这可能是开发测试用例本身时的规范(与执行测试周期相反,测试周期中会使用更多设备)。有人与NAF(非易访问性友好)节点进行过交互吗?由于视图没有标识符,我尝试还原到MonkeyDevice.type(),它正确地输入文本,但随后尝试继续使用现有/新视图客户端似乎失败。您应该问一个关于如何使用AVC选择序列号的新问题,以便我可以向您解释。
@staticmethod
def __obtainAdbPath():
    '''
    Obtains the ADB path attempting know locations for different OSs
    '''

    osName = java.lang.System.getProperty('os.name')
    ...
@staticmethod
def __obtainAdbPath():
    '''
    Obtains the ADB path attempting know locations for different OSs
    '''

    return """C:\Android\android-sdk\platform-tools\adb.exe"""
    osName = java.lang.System.getProperty('os.name')
    ...