zoukankan      html  css  js  c++  java
  • appium环境搭建+真机+获取package和activity来验证是否搭建成功+appium自带的定位元素

     提醒:安装好的环境不能随意改动配置和环境变量,如果改动需要重新启动appium server服务,要不然代码会一直报错,没有配置adb环境变量

    首先,我们需要搭建环境,要准备以下安装包和一部手机:

    所有需要的包给大家一个链接地址可供下载:

    链接: https://pan.baidu.com/s/16daXwktbGGYf3a6EaB9B1Q 提取码: uakz 

    第一步:安装JDK

      解压上面的jdk包,安装到需要的地方

      配置环境变量:

        

        

      验证是否安装和配置成功:

        cmd中输入java -version

       

    第二步:安装appium server

        解压Appium-windows-1.13.0.zip,点击“下一步”安装

    第三步:安装sdk,解压androidsdk.zip

        

        配置adb环境变量:因为在appium server 使用的时候会执行adb命令去执行我们的操作,所以必须要配

        

                  

         验证是否配置成功,cmd中输入adb version

         

    第四步:上面配置成功后,需要验证是否真正可以执行了

         1. 需要有一台安卓手机,并打开开发者工具

         2. 检查手机是否连接成功,在cmd中输入: adb  devices

                   3. 获取到我们需要被测应用的package和activity

                      两种方法获取:

            第一种:将apk保存到一个指定的目录下

              aapt.exe dump badging D:songqinappiumapk outiao.apk

            第二种:不知道apk,直接打开被测试的应用程序

              adb shell dumpsys activity recents find "intent={"

    第五步:appium server (start inspector session)自带的定位元素方式

           appium自带的定位元素,可以可以验证是否有多个存在,比其他的方便一些,可以使用id,class,name,xpath来定位

      1.打开appium,点击

        

      2.可以配置启动项,这里可以添加参数,需要打开的APP,什么方式打开等等,参照第六条代码,基本一致

         

                3.然后点击“start session”

          里面就和当前手机打开的页面一致,可以根据不同定位去搜索,验证,也可以在刷新页面,重新定位

     第六步:在pycharm执行脚本,前提条件(打开appium server 服务,手机已经连通)

        这里给大家一个apk:

          链接: https://pan.baidu.com/s/1XzA8dhhzfUoi7NUUMf9NOA 提取码: hfue 

            代码如下:

                               

    from appium import webdriver
    import time,traceback
    
    
    # 这里定义的 desired_capabilities,作为下面 webdriver.Remote
    # 初始化一个webdriver的参数。
    # 这些键值对告诉appium server 测试程序希望进行的是什么什么样的测试
    # 比如下面 platformName 和 platformVersion 两个配置项
    desired_caps = {}
    desired_caps['platformName'] = 'Android' #测试平台,不能写错
    desired_caps['platformVersion'] = '5.1.1' #平台版本,不能写错
    #设备名称,其实没有太大的用处,只是给测试程序使用的,苹果手机一定要有
    desired_caps['deviceName'] = 'test'
    #apk 文件路径名,如果设备还没有此应用,则会安装。 什么是apk文件?
    # android application package 安卓移动App安装包
    # desired_caps['app'] = r'D:songqinappiumapk	outiao.apk'
    #app package名,一定要有,是开发者给app取的名字,可以唯一标识这个app # 安卓上运行某个app,不是根据它的路径而是appid ,也就是这package name
    # 怎么获取?后面会讲
    desired_caps['appPackage'] = 'io.manong.developerdaily'
    # app默认Activity,也是必须的参数。Activity 的概念后面会讲述,
    # 目前我们就理解为一个用户操作界面就可以了
    # 怎么获取?后面会讲
    desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity'
    # 一定要有该参数,否则测试过程中无法输入中文
    #加上这个参数会新加一种unicode输入法
    desired_caps['unicodeKeyboard'] = True
    # 保证了app 测试前不会清除应用数据,缺省是会清除数据的,
    desired_caps['noReset'] = True
    # appium server 认为 和客户端之间 无响应最大时间,超过这个时间就会停止服务
    desired_caps['newCommandTimeout'] = 6000
    # appium server 在这个URI上接收 客户端发送的rest API请求
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    # 下面的操作是自动化一个用户登录的过程,大家课后自己尝试的时候,需要先注册用户
    # 怎么注册演示给大家看看, 怎么登录也演示给大家看看,
    # 最后别忘了要退出登录,一遍自动化可以执行
    try:
        # 和Selenium含义一样,问问大家还记得吗?
        driver.implicitly_wait(10)
    
        # 根据id找到元素,并点击,id和 html 元素的id不同,
        # 和appiumserver、设备之间的消息流程类似于 selenium,和
        driver.find_element_by_id("io.manong.developerdaily:id/tab_bar_plus").click()
        time.sleep(1)
        driver.find_element_by_id("io.manong.developerdaily:id/btn_email").click()
        time.sleep(1)
    
        # 输入用户名、密码
        ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_email")
        ele.send_keys('jcyrss@163.com')
        ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_password")
        ele.send_keys('sdfsdf')
    
        time.sleep(2)
        # 点击登录
        driver.find_element_by_id('io.manong.developerdaily:id/btn_login').click()
        driver.quit()
        pass
    
    except:
        print (traceback.format_exc())
    
    input('**** Press to quit..')

    运行成功,可以看到手机在自动安装APP,自己登陆!!

  • 相关阅读:
    MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类)
    IE和FF下javascript获取网页宽高及窗口大小
    JSON View – JSON格式化查看工具
    查询功能所属的菜单
    会计科目API CCID
    应付的帐龄分析SQL
    采购到入库所经历的表
    金额大小写转换(2)
    oracle行列转换总结
    金额大小写转换(1)
  • 原文地址:https://www.cnblogs.com/yangguanghuayu/p/11330629.html
Copyright © 2011-2022 走看看