Appium学习02-实战基础

Appium学习02-实战基础_第1张图片

Appium学习笔记目录

本文包含内容

  1. appium session简介
  2. appium基础代码详解
  3. 实战示例

会话session

  1. Appium测试程序和Appium server之间的http请求都必须在一个session中进行
  2. 每次运行代码相当于开启了一个会话session
  3. 每个会话对应一个id,每一次的请求都会带上 session id

基本配置

1. desired_capabilities

01详解Appium server capabilities
02详解Appium server capabilities

这些键值对告诉appium server测试程序希望进行的是什么样的测试

desired_caps = {}  # 定义字典:告诉appium我们的一些配置
desired_caps['platformName'] = 'Android'  # 固定值
desired_caps['platformVersion'] = '8.1'  # android版本
desired_caps['deviceName'] = 'test'  # 连接多个设备时会用到 ?
desired_caps['app'] = r'/Users/liuhuaiyuan/Downloads/apk/toutiao.apk' # apk在电脑上的路径
desired_caps['appPackage'] = 'io.manong.developerdaily' # apk的package  通过aapt命令查找
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity' # 指定apk的启动界面(通常启动界面是唯一的) 通过aapt命令查找
desired_caps['unicodeKeyboard']  = True  # 安装中文输入法,以便于控制,及部分中文的输入
desired_caps['resetKeyboard']  = True  # 针对上一条语句,如果手机还有其他的输入法,还原输入法,便于其他操作
desired_caps['noReset'] = True   # 重要参数,=True 恢复默认值,=False(缺省值) 每次都是从刚安装app的状态进入(格式化状态),可能会显示欢迎页等
desired_caps['newCommandTimeout'] = 6000  # 设置等待时间,当超过这个时间时,将断开与appium的连接。单位是秒
  • 通用参数


    Appium学习02-实战基础_第2张图片
  • Android专用参数


    Appium学习02-实战基础_第3张图片

    Appium学习02-实战基础_第4张图片
  • Ios专用参数


    Appium学习02-实战基础_第5张图片

    Appium学习02-实战基础_第6张图片

2. 获取appPackage和appActivity

  • 方式一:通过aapt命令获取
    补充:Mac配置aapt环境变量方法

    • 通过aapt命令获取,aapt在sdk目录下的build-tools目录下
    # aapt dump badging apk位置
    # Mac:
    aapt dump badging /Users/用户名/Downloads/duoduoCalculators.apk
    # win:
    aapt dump badging F:\android_apk\jykl5.1.5test.apk 
    
    
    • 扩展aapt dump badging F:\android_apk\jykl5.1.5test.apk >d:\info.txt && d:\info.txt

    命令解释:输出到d:\info.txt 并打开此文件

    1. d:\info.txt 表示将前面的执行结果输出到d盘下的文件info.txt中
    2. &&表示如果前面的命令执行成功,则继续执行后面的命令(打开d盘下的文件info.txt)
    • 查找package:name对应的值,即为appPackage的值


      Appium学习02-实战基础_第7张图片
      aapt01.png
    • 查找launchable-activity:name对应的值,即为appActivity的值


      Appium学习02-实战基础_第8张图片
      aapt02.png
  • 方式二:通过adb命令获取

    adb shell pm list packages 如果想知道应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数
    adb shell pm list packages -f 获取appActivityj adb shell dumpsys activity findstr "mFocusedActivity"
    

练习代码

# coding=utf8

from appium import webdriver
import time,traceback

desired_caps = {}  # 定义字典:告诉appium我们的一些配置
desired_caps['platformName'] = 'Android'  # 固定值
desired_caps['platformVersion'] = '8.1'  # android版本
desired_caps['deviceName'] = 'test'  # 连接多个设备时会用到 ?
desired_caps['app'] = r'/Users/liuhuaiyuan/Downloads/toutiao.apk' # apk在电脑上的路径
desired_caps['appPackage'] = 'io.manong.developerdaily' # apk的package  通过aapt命令查找
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity' # 指定apk的启动界面(通常启动界面是唯一的) 通过aapt命令查找
desired_caps['unicodeKeyboard']  = True  # 安装中文输入法,以便于控制,及部分中文的输入
desired_caps['resetKeyboard']  = True  # 针对上一条语句,如果手机还有其他的输入法,还原输入法,便于其他操作
desired_caps['noReset'] = True   # 重要参数,=True 恢复默认值,=False(缺省值) 每次都是从刚安装app的状态进入(格式化状态),可能会显示欢迎页等
desired_caps['newCommandTimeout'] = 6000  # 设置等待时间,当超过这个时间时,将断开与appium的连接。单位是秒
#启动Remote RPC
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps ) # 连接appium,并将参数(字典)传入,执行完此句后,与appium创建一个session
# 0.0.0.0:4723
try:
    driver.implicitly_wait(10)  # 隐式等待,每0.5秒查询一次,直到指定时间,结束。单位是秒

    # 根据id找到元素,并点击,id和 html 元素的id不同
    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 = driver.find_element_by_id("io.manong.developerdaily:id/edt_phone")
    ele.send_keys('XXXXXXXXX')
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_password")
    ele.send_keys('XXXXXXX')

    time.sleep(2)
    # 点击登录
    driver.find_element_by_id('io.manong.developerdaily:id/btn_login').click()
    pass

except:
    print (traceback.format_exc())

input('**** Press to quit..')
driver.quit()

你可能感兴趣的:(Appium学习02-实战基础)