Appium-实战之启动App

作者: 五娃儿 | 来源:发表于2017-11-13 18:23 被阅读96次

    在尝试多天的Monkey之后,发现不能从根源上解决当前的需求,故开启Appium小白之路。

    代码如下:

    #coding:utf-8
    
    import os
    from appium import webdriver
    
    PATH = lambda p: os.path.abspath(
        os.path.join(os.path.dirname(__file__), p)
    )
    
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '4.4'
    desired_caps['deviceName'] = '连接的真机名'#
    desired_caps['app'] = PATH('./app/v2.0.0.apk')
    desired_caps['appPackage'] = 'package'
    desired_caps['appActivity'] = package+启动activity'
    desired_caps['noSign'] = True  # 跳过检查签名,只做UI测试
    desired_caps['unicodeKeyboard'] = True  # 使用Unicode编码方式发送字符串
    desired_caps['resetKeyboard'] = True  # 隐藏系统键盘
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    driver.implicitly_wait(5)
    driver.quit()
    

    问题一:如何获取真机的UDID?

    • 通过adb devices, 图中的3e3e9ae9 是连接手机的唯一设备识别符。


      结果.png

    问题二:appPAth为何是./app下?

    • 目录结构如下图,此目录结构暂时如此,可以根据自身需要进行调整,所以apk均被放到了app目录下。


      目录结构.png

    问题三:appPackage的获取?

    • 通过 aapt dump badging v2.0.0.apk
      结果示意图.png

    问题四:appActivity如何获取?

    • 通过AndroidManifest.xml文件中的intent-filte里面的android.intent.category.LAUNCHER查找,因为LAUNCHER这一项是是唯一的;然只找到这个activity是不够的,还需要xml顶部的package名字。格式参考:com.xxx.xxx.activity.xxxx。


      xml样例截图.png
      xml样例头的包名位置.png

    问题五:webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)的作用?

    • 作用:启动app。
      ip地址和端口号需要和Appium客户端的Server Address 保持一致。


      Appium客户端链接的服务器地址.png
    • 总结:
      主要在第四步的时候耽误的时间比较久,网上搜索答案时,只说是启动app,后来咨询了开发小伙伴,才知道要按照包名+启动activity的结果
      因为实际一个手机上会有多个app,但是可能某几个app的启动项的activity名是相同的,加上包名是为了进行区分,因为包名是唯一的。

    相关文章

      网友评论

        本文标题:Appium-实战之启动App

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