APP自动化基础知识

一、adb常用命令 及 Appium的元素定位工具

以下命令均在cmd中进行操作

  1. 连接夜神模拟器:
 adb connect 127.0.0.1:62001
  1. 查看连接的设备:
adb devices
  1. 查看被测app的包名以及界面名
 adb shell dumpsys window windows | findstr mFocusedApp
  1. 元素常见的几个属性:
    text
    resourceId
    class: 元素标签
    content-desc: 元素功能描述
    注:在截屏的时候,必须当前截屏的终端没有其他的进程在占用,包括appium server
  2. 文本定位工具:
    1.1 uiautomator
    安卓SDK自带的定位工具
    1.2 appium Desktop Inspector
    appium-server 自带的定位工具
    1.3 weditor
    Uiautomator2 python第三方库 app自动化测试框架
    安装Uiautomator2:
	 命令01:pip install Uiautomator2
     命令02: python -m uiautomator2 init
     命令03: pip install weditor
     确认安装: weditor --help
     启动weditor: python -m weditor
二: Appium界面元素定位方法(id/ClassName/accessibility/xpath)
  1. 通过resourceId属性定位 find_element(AppiumBy.ID, value) 返回的是一个WebElement对象
  2. 通过文本定位 find_element(AppiumBy.ANDROID_UIAUTOMATOR, ‘new UiSelector().text(“value”).方法二’) 组合定位
    通过调用系统自带框架(Uiautomator1/Uiautomator2)实现元素定位,基于java代码编写UiSelector实现元素定位,提供很多方法,通过多个属性实现元素定位
  3. 通过这个content-desc/description属性实现元素定位
    find_element(AppiumBy.ACCESSIBILITY_ID, “value”)
  4. 通过xpath定位,一般不建议采用这个方法进行定位
三、APP元素的操作
  1. APP四大常用操作:click()点击, send_keys()发送, get_attribute() 获取属性, text() 获取文本
  2. 滑屏, 多点触控, 长按 …
  3. 滑屏操作: 左滑、右滑
    driver.swipe(self: T, start_x: int, start_y: int, end_x: int, end_y: int, duration: int = 0)
    参数说明:
    start_x: 开始位置的x坐标
    start_y: 开始位置的y坐标
    end_x: 结束位置的x坐标
    end_y: 结束位置的y坐标

左滑: 开始位置的x坐标 > 结束位置的x坐标, 开始位置的y坐标 = 结束位置的y坐标

示例代码

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

# 初始化 app 的配置信息
des_caps = {
    "platformName": "android",  # 操作系统
     "platformVersion": "7.1.2",  # 系统版本
     "deviceName": "****",  # 连接的名称
     "appPackage": "com.organizationuniapp",  # app的包名
     "appActivity": "io.dcloud.PandoraEntryActivity",  # app的界面名
      "unicodeKeyboard": True,   # 使用unicode输入法
      'resetKeyboard': True,  # 重置输入法到初始状态
      'noReset': True  # 启动app时不要清除app里的原有的数据
     }

# 连接appium-server
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des_caps)

# 三大等待: 强制等待, 显示等待, 隐式等待
driver.implicitly_wait(15)

# 利用 text文本来获取元素
code = driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("获取验证码")')
code.click()

# 利用xpath来获取元素(不建议)
username = driver.find_element(AppiumBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[1]/android.view.View/android.view.View[1]/android.view.View/android.widget.EditText")
username.send_keys("19922222222")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值