Appium手机端测试自动化

  1. 下载Appium与node.js、android-sdk

  2. 配置他们的环境变量
    node环境变量
    Appium手机端测试自动化_第1张图片
    appium环境变量
    Appium手机端测试自动化_第2张图片
    sdk环境变量
    Appium手机端测试自动化_第3张图片

  3. 安装appnium的服务端 同时进行对环境变量的设置
    安装appniumd的客户端 pycharm中进行setting中进行
    安装node.js 并进行环境变量的设置
    找到自己的sdk中的tools文件下的 uiautomator

  4. 连接监控器
    Appium手机端测试自动化_第4张图片

  5. 连接配置设备编号Appium手机端测试自动化_第5张图片

  6. 启动appiumAppium手机端测试自动化_第6张图片

  7. 在python的第三方库下载Appium-Python-Client
    Appium手机端测试自动化_第7张图片

  8. 在python中调用
    Appium手机端测试自动化_第8张图片

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from time import sleep

# 设置手机参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.43.166:5554'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True

""":arg
手机参数对应指标
    desired_caps常用参数:
    platformName         平台的名称:iOS, Android, or FirefoxOS
    platformVersion      设备系统版本号
    deviceName           设备号 IOS:instruments -s devices,Android: adb devices
    app                  安装文件路径:/abs/path/to/my.apk or http://myapp.com/app
    appActivity          启动的Activity
    appPackage           启动的包
    unicodeKeyboard      unicode设置(允许中文输入)
    resetKeyboard        键盘设置(允许中文输入)
"""

# 设置手机配置  写死的
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

  1. 常用定位Appium手机端测试自动化_第9张图片
  2. 这边使用模拟器测试
    启动后 如果是第一次启动会新添加两个软件 并跳转到控制里边
    Appium手机端测试自动化_第10张图片
  3. 使用代码进行定位自动化
    Appium手机端测试自动化_第11张图片
# 开始调用

# 从pc端往移动端安装apk文件 (apk文件路径)
# driver.install_app('F:\ce_shi\雷电模拟器\geeknews_qqtn.apk')

# 删除移动端应用  (包名)
# driver.remove_app('com.codeest.geeknews')

# 通过id定位
driver.find_element_by_id('com.android.settings:id/title').click()
# 点击返回按钮
# 通过class定位
driver.find_element_by_class_name('android.widget.ImageButton').click()
sleep(2)
# 通过text定位
driver.find_element_by_xpath('//*[contains(@text,"WLAN")]').click()
  1. 常用方法
""":arg
swip滑动
 方法:swipe(start_x, start_y, end_x, end_y, duration=None)
  参数:
      1.start_x:起点X轴坐标
      2.start_y:起点Y轴坐标
      3.end_x:  终点X轴坐标
      4.end_y,: 终点Y轴坐标
      5.duration: 滑动这个操作一共持续的时间长度,单位:ms
"""
driver.swipe(216, 1851, 216, 1635, 2000)
""":arg
 方法:drag_and_drop(origin_el, destination_el)
  参数:
      1.origin_el:滑动开始的元素
      2.destination_el:滑动结束的元素
"""
# drag拖拽事件
# WLAN定位
cunchu = driver.find_element_by_xpath("//*[contains(@text,'存储')]")
# 存储定位
wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
# scroll滑动事件
driver.drag_and_drop(cunchu, wlan)
""":arg
手指按操作
"""
wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
""":arg
  # 通过元素定位方式按下屏幕
      el = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
      TouchAction(driver).press(el).release().perform()

      # 通过坐标方式按下屏幕,WLAN坐标:x=155,y=250
      # TouchAction(driver).press(x=155,y=250).release().perform()
      
      press定的位置  wait 等待时间  release 退出
"""
TouchAction(driver).press(wlan).wait(5).release().perform()

""":arg
long_press 长按操作
方法:long_press(el=None, x=None, y=None, duration=1000)
  参数:
      1.element:被定位到的元素
      2.x:通常会使用元素的X轴坐标
      3.y:通常会使用元素的Y轴坐标
      4.duration:持续时间,默认为1000ms
"""
TouchAction(driver).long_press(wlan,duration=5000).release().perform()
""":arg
模拟手机的滑动操作
  方法:move_to(el=None, x=None, y=None)
  参数:
      1.el:定位的元素
      2.x:相对于前一个元素的X轴偏移量
      3.y:相对于前一个元素的Y轴偏移量
      通过坐标拉
      wait 等待时间
"""
sleep(1)
driver.find_element_by_xpath("//*[contains(@text,'安全')]").click()
sleep(1)
driver.find_element_by_xpath("//*[contains(@text,'屏幕锁定方式')]").click()
sleep(2)
TouchAction(driver).press(x=180, y=1440).wait(1000).move_to(x=-2, y=-720).wait(1000).move_to(x=724, y=2). \
	wait(1000).move_to(x=0, y=716).wait(1000).move_to(x=-322, y=0).wait(1000).move_to(x=0, y=-358).release().perform()
sleep(5)
#返回上一级
driver.back()
# 退出
driver.quit()

你可能感兴趣的:(appium)