美文网首页
uiautomatorviewer自动生成xpath

uiautomatorviewer自动生成xpath

作者: yangzai | 来源:发表于2018-01-25 09:04 被阅读1048次
    github下载示例工程
    使用方式:

    执行gradle jar命令(或gradlew jar),将build目录下编译出来的uiautomatorviewer.jar替换你本地的${ANDROID_HOME}/tools/lib下的uiautomatorviewer.jar即可.
    或者使用跟目录下已编译好的jar

    背景:

    在做UI自动化时必不可少需要使用到uiautomatorviewer这个工具,但是有时候我们进行元素定位的时候希望使用xpath定位,而这个 工具自身并没提供,为了方便自动生成xpath。在网上找到的方法感觉不是很完整,于是打算自己亲自对该工具进行二次开发。

    • 开发环境:
      • ide:intellij idea
      • 编译环境:gradle
      • 语言环境:java
      • 还要必不可少的android sdk
    下载源码
    LOCAL_JAVA_LIBRARIES := \
        swt \
        org.eclipse.jface_3.6.2.M20110210-1200 \
        org.eclipse.core.commands_3.6.0.I20100512-1500 \
        org.eclipse.equinox.common_3.6.0.v20100503
    

    这些jar可以到你本地的${ANDROID_HOME}/tools/lib中找到

    构建:
    • 添加gradle构建文件:
      • 1.在源码跟目录添加settings.gradle,build.gradle
        settings.gradle:
    rootProject.name = 'myuiautomatorview'
    

    build.gradle:

    group 'yangzaiCN'
    version '1.0-SNAPSHOT'
    def clientName = "uiautomatorviewer.jar"
    apply plugin: 'java'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    jar {
        manifest {
            attributes 'Implementation-Title': 'yangzaiCN uiautomator',
                    'Implementation-Version': version,
                    'Main-Class': 'com.android.uiautomator.UiAutomatorViewer',
                    'Class-Path':'org-eclipse-jface-3.6.2.jar ddmlib.jar org-eclipse-core-c\
            ommands-3.6.0.jar org-eclipse-equinox-common-3.6.0.jar osgi-4.0.0.jar\
            common.jar kxml2-2.3.0.jar annotations.jar guava-17.0.jar'
        }
        archiveName = clientName
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
    }
    

    主意:Class-Path中的jar要与你本地sdk中${ANDROID_HOME}/tools/lib目录下的jar版本对应。


    1517371277(1).png
    • 2.根目录添加libs文件夹,把刚才找到的几个jar文件拷贝进来
    • 3.使用ide导入gradle工程,编译完成后运行com.android.uiautomatorviewer.UiAutomatorViewer即可
    问题:

    如果在dump资源的时候出现崩溃弹窗,如:

    Non-zero return code from "rm" xml dump command
    或者
    Non-zero return code from "rm" screenshot command
    

    这些异常时使用adb命令时抛出的,具体原因后续研究,解决的方式也很简单,你可以先执行下dump或screencap命令。对应的类是
    com.android.uiautomator.actions.ScreenshotAction

    adb shell /system/bin/uiautomator dump /sdcard/uidump.xml
    或
    adb shell screencap -p /sdcard/screenshot.png
    
    QQ图片20180129192831.jpg

    相关文章

      网友评论

          本文标题:uiautomatorviewer自动生成xpath

          本文链接:https://www.haomeiwen.com/subject/hltdaxtx.html