python-App自动化数据配置及运行

本文介绍了如何使用Appium进行Android应用自动化测试,包括设置手机参数、查找应用的Package和Activity、错误排查以及元素定位。通过uiautomateviewer和AppiumInspector工具查看界面元素,并详细解析了元素的各种属性。此外,还提供了在遇到问题时的解决策略,例如禁用权限监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

手机参数配置

查找应用Package和Activity

出错解决

定位元素

代码规则

界面元素查看工具

uiautomateviewer

Appium Inspector

元素属性


手机参数配置

from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
#运行需要导入上面的库方法

desired_caps = {
  'platformName': 'Android', # 被测手机是安卓
  'platformVersion': '9', # 手机安卓版本(针对连接的手机填写Andriod版本)
  'deviceName': 'xxx', # 设备名,安卓手机可以随意填写,IOS根据具体手机填写
  'appPackage': 'tv.danmaku.bili', # 启动APP Package名称(方法见下面文档)
  'appActivity': '.ui.splash.SplashActivity', # 启动Activity名称(方法见下面文档)
  'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True(如果输入只是拉丁文不用写,为了方便,写哦!)
  'resetKeyboard': True, # 执行完程序恢复原来输入法(在执行完操作后查看手机输入法默认为Unicode IME)
  'noReset': True,# 不要重置App(如果不操作,手机原来的应用设置会失效,相当于重装应用)
  'newCommandTimeout': 6000,  #应用的最大超时响应时间
  'automationName' : 'UiAutomator2'   # 使用的自动化引擎的名称,为了能够支持UiAutomator2,Appium引入了appium-uiautomator2-server(类似driver与Selenium关系)
   # 'app': r'd:\apk\bili.apk',要运行的应用解释备注
}

# 连接Appium Server,初始化自动化环境,访问的地址统一如下,为桌面Appium的工具默认访问地址和端口
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

#以下操作同Web自动化
# 设置缺省等待时间
driver.implicitly_wait(5)

# 如果有`青少年保护`界面,点击`我知道了`
iknow = driver.find_elements_by_id("text3")
if iknow:
    iknow.click()

# 根据id定位搜索位置框,点击
driver.find_element_by_id("expand_search").click()

# 根据id定位搜索输入框,点击
sbox = driver.find_element_by_id('search_src_text')
sbox.send_keys('python自动化')
# 输入回车键,确定搜索
driver.press_keycode(AndroidKey.ENTER)

# 选择(定位)所有视频标题
eles = driver.find_elements_by_id("title")

for ele in eles:
    # 打印标题
    print(ele.text)

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

查找应用Package和Activity

手机上安装并打开了应用(不要杀掉应用进程),然后在命令行窗口中执行命令:adb shell dumpsys activity recents | find "intent={"

其中显示的cmp中/前的部分为appPackage的值,/后面的部分为appActivity的值。

如果在产品还未正式发布,我们已经有了产品的包,有apk的情况下获取Package和Activity。命令窗口输入如下命令(黄色区域为aapt所在位置,绿色区域为引用包所在位置)查找package名:

E:\Java\Andriod-tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "package: name="

输出的信息中就会有package的包名(绿色区域):

package: name='tv.danmaku.bili' versionCode='5531000' versionName='5.53.1' platformBuildVersionName='5.53.1' compileSdkVersion='28' compileSdkVersionCodename='9'

输入下面命令查找启动的Activity:

E:\Java\Andriod-tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "launchable-activity"

输出结果信息(其中前面一部分为包名,后面一部分为Activity,代码中可以选择全写):

launchable-activity: name='tv.danmaku.bili.ui.splash.SplashActivity'  label='' icon=''

出错解决

运行时需要打开打开桌面程序Appium工具出现如下界面,正确信息:

[Appium] Appium REST http interface listener started on 0.0.0.0:4723

运行出错,手机没有反应:OPPO手机开发者选项中打开”禁止权限监控”

首次运行时,手机弹出安装相关应用或程序,选择安装,如Appium Settings。

定位元素

代码规则

Appium和Selenium Web中的操作一样,先选择定位元素再操作元素。

Appium基于Selenium,所以代码的定位元素的基本方法相同:

  1. Find_element_by_xxx方法,返回符合条件的第一个元素,找不到元素抛出异常
  2. Find_elements_by_xxx方法,返回符合条件的所有元素的列表,找不到元素返回空列表
  3. 通过WebDriver对象调用这样的方法,查找范围是整个界面
  4. 通过WebElement对象调用这样的方法,查找范围是该节点的子节点

界面元素查看工具

在WEB中可以通过浏览器的开发者工具栏定位查看元素为位置及属性,在APP手机应用中同样也有查看元素位置及属性特征的工具: Android Sdk包中的 uiautomateviewer 和 Appium Desktop 中的 Appium Inspector

uiautomateviewer

uiautomateviewer是Andriod SDK中的工具,它的位置在SDK目录下的tools\bin下。

操作步骤:

  • 连接手机在开发者模式下,打开应用界面(定位元素的界面)
  • 双击tools\bin下的uiautomateviewer,出现下面的工具窗口和命令窗口(不要关闭开启的命令窗口,否则uiautomateviewer工具操作窗口也会关闭)

  • 寻找元素:点击上图中黄色箭头所指的图标,获取手机端应用界面,如下(获取到正在打开的微信通讯录界面)【左边界面中移动鼠标对应的元素会出现红色虚线框;右边上方显示元素的坐标位置(坐标位置显示中前面的定位点为红色框的左上方位置坐标,后面的定位点为红色框的右下方位置坐标);右边下方位置显示的内容为元素的具体属性特征信息,如ID/class等】

  • 选中元素:点击定位达到的元素,使红色虚线框变为实线框,在右边下方的栏中查看元素

  • 重新获取界面,当手机上的界面切换后,想要获取新的界面进行元素定位时,只需要和刚开始的操作一样,点击上图所示的绿色箭头所指的绿色框中的获取界面按钮即可。

【保存当前获取的界面存放到本机中,下次同样界面信息时可以直接从本机中获取,不需要使用手机。可以对每一个界面命名建立不同的文件夹方便调用,如本机中获取到微信通讯录界面的信息,保存在桌面文件夹微信通讯录中,一个界面图片对应一个.uix的界面元素信息文件】

方法:在手机上获取到当前界面后,点击下图中蓝色框中的保存按钮,选择合适的文件夹(最好是在保存前就创建好文件夹)保存,下次需要重新打开界面查找元素的时候,点击绿色框中的打开文件夹的按钮,弹出下面窗口,通过点击红色框选择要打开查找的文件,Screenshot选择的界面对应的图片,UI XML Dump选择的是存放界面元素信息的文件,完成后点击OK即可打开进行定位操作。

Appium Inspector

Appium Desktop中的Appium Inspector也可以用来查找界面元素,其优点就是可以直接验证选择的表达式是否能定位到元素。

操作步骤

  • 连接好手机,处于开发者模式下。
  • 打开Appium工具,启动Appium Server,点击红色框中放大镜查找的按钮。
  • 弹出如图窗口:窗口中红色框中的参数设置与自动化代码中的一致,黄色框中为对应的参数名,参数数据类型(根据不同的参数类型选择),参数值。右边绿色框中会根据左边框中设置的参数自动生成JSON格式的参数字典,如果已经有了JSON格式的参数字典,可以点击蓝色框中编辑按钮复制过去。

  • 启动与保存:如图,点击红色框中的保存按钮,下次操作的时候直接使用已经设置好的参数文件。点击右边的橙色框中启动按钮,就可以打开手机上对的应用,如下面打开B站的结果。

  • 查找元素:选择图中所示功能按钮中的查找元素的功能后,当鼠标移动到界面对应的位置时,会高亮显示为黄色,如图中的搜索框。

  • 定位元素:点击查找到的元素的黄色高亮区域,会最终变为蓝色,对应的右边也会显示出元素对应的id等信息,如下图:

元素属性

NAF:true 输入框不能输入字符

index:表示父节点的第几个子节点

resource_id:类似于id

text:文本信息

class:类似于标签名与class

package:包名

content-desc:节点描述信息

checkable :是否是可选择的

checked:是否是已选择的

clickable:是否是可点击的

enabled:可用状态

focusable:是否可以聚焦

focused:是否是聚焦状态的

scrollable:是否是可滚动的

long-clickable:是否可长按

bounds:坐标 左上角和右下角

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值