移动端APP自动化测试之元素定位和加密操作

本文详细介绍了移动端APP自动化测试中的各种操作,包括启动和关闭应用、安装及卸载APK、元素定位(如id、class、xpath)、点击、获取元素属性等,并提供了丰富的代码示例。此外,还涵盖了base64加密解码、文件传输、屏幕截图以及等待显示等相关技术。
摘要由CSDN通过智能技术生成

1. 启动新app

  • 语法
driver.start_activity("包名","启动名")

# 短信包名 启动名 com.android.mms .ui.ConversationList
# 启动短信
driver.start_activity("com.android.mms", ".ui.ConversationList")
  • 演示代码
import time
from appium import webdriver

desired_caps = dict()
# 平台
desired_caps["platformName"] = 'Android'
# 系统版本
desired_caps["platformVersion"] = '5.1'
# 设备名称
desired_caps["deviceName"] = 'sanxing'
# app包名
desired_caps["appPackage"] = 'com.android.setting'
# app启动名
desired_caps["appActivity"] = '.Settings'

# 声明手机驱动对象 结果:启动启动参数指定app  创建session
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

# 短信包名 启动名 com.android.mms .ui.ConversationList
time.sleep(2)
# 启动短信
driver.start_activity("com.android.mms",".ui.ConversationList")

2. 关闭app

  • 语法
driver.close_app() # 关闭app 但不会关闭驱动对象
driver.quit() # 关闭app 同时关闭驱动对象
  • 代码演示1
"""close_app()"""
time.sleep(2)
# 关闭设置 关闭app 但不关闭驱动对象
driver.close_app()

# 短信包名 启动名 com.android.mms .ui.ConversationList
time.sleep(2)
# 启动短信
driver.start_activity("com.android.mms", ".ui.ConversationList")
# ❗ 注意:当有app不使用时,需要直接关闭掉
  • 代码演示2
"""quit()"""
time.sleep(2)
# 执⾏关闭 关闭driver
driver.quit()
# 启动短信
driver.start_activity("com.android.mms", ".ui.ConversationList")

3. 安装apk到手机

  • 语法
driver.install_app("apk文件绝对路径")

# 兼容系统写法
driver.install_app(os.getcwd() + os.sep + "com.example.corel.calc_2.1.1023_11.apk")

4. 从手机卸载app

  • 语法
driver.remove_app("app包名") # 注意不能卸载系统app
  • 代码演示
import os
from appium import webdriver

desired_caps = dict()
# 平台
desired_caps["platformName"] = 'Android'
# 系统版本
desired_caps["platformVersion"] = '5.1'
# 设备名字
desired_caps["deviceName"] = 'sanxing'
# app包名
desired_caps["appPackage"] = 'com.android.settings'
# app启动名
desired_caps["appActivity"] = '.Settings'
# 声明手机驱动对象 结果:启动启动参数指定app  创建session
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

# 安装apk文件到手机 支持覆盖安装
driver.install_app(os.getcwd() + os.sep + 'com.example.corel.calc_2.1.1023_11.apk')

# 卸载手机<<自己>>安装的计算器
# 计算机包名# com.example.corel.calc
# 执行卸载
driver.remove_app("com.example.corel.calc")

# 退出
driver.quit()

5. 判断app是否安装

  • 语法
driver.is_app_installed(app包名) # 如果手机安装返回True 未安装返回False
  • 代码演示
"""判断计算是否安装 安装->卸载 未安装->安装"""

# 判断app 如果存在返回True 不存在返回False
isApp = driver.is_app_installed("com.example.corel.calc")
if isApp:
    # 判断app安装 ->卸载
    driver.remove_app("com.example.corel.calc")
else:
    # 安装apk⽂件到⼿机 ⽀持覆盖安装
    driver.install_app(os.getcwd() + os.sep + 'com.example.corel.calc_2.1.1023_11.apk')

6. base64加密、解码

  • 代码
import base64

value = "hello"

# base64加密
data = str(base64.b64encode(value.encode('utf-8')), 'utf-8')
print(data)

# base64解码
de_data = str(base64.b64decode(data), 'utf-8')
print("de_data:", de_data)

7. 发送文件到手机

  • 语法
driver.push_file("手机存储路径","base64编码数据")
  • 代码演示
# base编码
import base64
str(base64.b64encode("数据".encode('utf-8')), 'utf-8')

"""
将hello写⼊到⼿机/sdcard/abc.txt
"""
# hello进行base64编码
data = str(base64.b64encode("hello".encode('utf-8')), 'utf-8')
# push 方法发送到手机
driver.push_file("/sdcard/abc.txt", data)
# 注意 -不指定文件名字 /sdcard
# driver.push_file("/sdcard", data)
  • ❗注意:如果不指定手机文件存储名字,也可以完成发送,但是文件是以appium开头以.tmp结尾的临时文件,不方便维护

8. 从手机拉取文件

  • 语法
driver.pull_file("手机文件路径") # 返回⽂件中经过base64编码数据
  • 代码演示
# 解码
import base64
str(base64.b64decode(编码数据), 'utf-8')

"""
将⼿机/sdcard/abc.txt⽂件数据拉取到电脑
"""
# 拉⽂件 返回base64编码数据
data = driver.pull_file('/sdcard/abc.txt')
print("拉取回数据:", data)
# 解码
re_data = str(base64.b64decode(data), 'utf-8')
print("解码后数据:", re_data)

9. 获取当前屏幕元素结构

  • 语法
driver.page_source # 返回当前屏幕内元素的xml字符串

❗ 注意:每一个元素都包含一些属性和属性值

# 写入文件
with open("./page.xml", 'w') as f:
	f.write(driver.page_source)

10. 查看手机页面元素

uiautomatorviewer
位置:sdk家目录下的tools目录中(从系统变量中找)

使用时:
	1.手机需要打开对应页面,在使用uiautomatorviewer截图
	2.找元素找可选中最⼩单位

元素属性:
	text属性
	resource-id属性
	class属性
	content-d
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值