appium修改Android设备,Appium自动获取 Android 设备 id 和包名等信息(python)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/zhusongziye/article/details/77856259

使用 Appium,每次换设备换 APP 测试时要在脚本修改很多东西,很麻烦,要自动获取可以通过指令获得的信息,使用该起来也方便。

最终效果是每次只需要修改测试的包的路径和包名就可以自动删除旧的安装包,并获得 Android 设备 id 和包名等 Appium 需要的信息。

适用于:Python + Android

使用到了 aapt,该工具在 SDK/tools 目录下,如果你没有设置环境变量,那需要进入该目录下才能运行 aapt 命令,如果设置了环境变量则可以在任何目录下运行 aapt 命令了。配置 aapt 环境变量的方法,请自行百度。

下面上代码:

# -*- coding: utf-8 -*-

from appium import webdriver

# 使用正则表达式筛选设备 id

import re

# 使用time.sleep(xx)函数进行等待

import time

# 使用 os 模块调用命令

import os

# 测试的包的路径和包名

appLocation = " /Users/Downloads/app.apk "

# 读取设备 id

readDeviceId = list(os.popen('adb devices').readlines())

# 正则表达式匹配出 id 信息

deviceId = re.findall(r'^\w*\b', readDeviceId[1])[0]

# 读取设备系统版本号

deviceAndroidVersion = list(os.popen('adb shell getprop ro.build.version.release').readlines())

deviceVersion = re.findall(r'^\w*\b', deviceAndroidVersion[0])[0]

# 读取 APK 的 package 信息

appPackageAdb = list(os.popen('aapt dump badging ' + appLocation ).readlines())

appPackage = re.findall(r'\'com\w*.*?\'', appPackageAdb[0])[0]

# 删除以前的安装包

os.system('adb uninstall ' + appPackage)

desired_caps = {

'platformName': 'Android',

'platformVersion': deviceVersion,

'deviceName': deviceId,

'appPackage': appPackage,

'appWaitPackage': appPackage,

'app': appLocation,

'appActivity': appPackage + ".PageSplash",

command_executor = "http://localhost:4723/wd/hub"

【转】获取android设备 id

关于本文档 Android的开发者在一些特定情况下都需要知道手机中的唯一设备ID.例如,跟踪应用程序的安装,生成用于复制保护的DRM时需要使用设备的唯一ID.在本文档结尾处提供了作为参考的示例代码片段 ...

ptyhon获取app设备号、包名、activity

直接上代码: import time import os import re import sys #------------------------------------------------- ...

Android获取apk的版本及包名等信息

import android.app.Activity; import android.content.Context; import android.content.pm.ApplicationIn ...

获取Android设备屏幕分辨率

1.Android 4.3引入的wm工具: a.获取Android设备屏幕分辨率: adb shell wm size b.获取android设备屏幕密度: adb shell wm density ...

Android 开发 获取Android设备的屏幕高宽

获得屏幕的宽度和高度有很多种方法: //1.通过WindowManager获取 DisplayMetrics dm = new DisplayMetrics(); heigth = dm.height ...

获取Android设备WIFI的MAC地址 “MAC地址”

需要指出的是:wifi状态和wifi AP状态是互斥的状态:也就是一旦发现WIFI AP打开,WIFI是不能被打开的. 获取Android设备的WIFI MAC地址,首先需要将设备中的WIFI个人热点 ...

Java 获取APK安装程序的包名

Java 获取APK安装程序的包名核心的两个类:  ResPackage ApkDecoder  package com.temobi.util; import java.io.File; impo ...

获取apk package name(包名)以及activity name

通过adb 查看最上层成activity名字: linux: adb shell dumpsys activity | grep "mFocusedActivity" window ...

C# 获取U盘ID序列号及U盘信息

C# 获取U盘ID序列号及U盘信息 2011-05-20 上传大小:35KB c#VS2005U盘IDU盘信息   获取U盘ID序列号 VS2005编译通过,源码源自CSDN.已经测试好用. 可以获得 ...

随机推荐

MySql学习(四) —— 函数、视图

注:该MySql系列博客仅为个人学习笔记. 本篇博客主要涉及MySql 函数(数学函数.字符串函数.日期时间函数.流程控制函数等),视图. 一.函数 1. 数学函数 对于数学函数,若发生错误,所有数学 ...

iOS - 果冻效果

具体使用的CADisplayLink和贝塞尔曲线 下载地址:https://github.com/nLoser/CustomAnimation 效果: // // DisplayView.m // C ...

SVN补充

为什么使用SVN? 1.需求1:备份,以防电脑死机断电等 2.需求2:代码还原,代码不管你改成什么样都可以找到某一段的版本 3.需求3:协同修改,下载修改同一个文件,防止被相互覆盖 4.需求4:多版本 ...

部署nginx+rsyslog补丁

nginx 配置: user nginx; worker_processes 1; syslog local5 nginx; error_log /var/log/nginx/nginx_error. ...

MyEclipse10中配置WebLogic10

MyEclipse10中配置WebLogic10 1.双击打开MyEclipse10,依次操作"Window--->Preferences" 2.在左侧菜单中找到" ...

WORK

团队展示 队伍信息 队名:小狗队 队长:刘映华(201421122021) 队员:兰运良(201421122030).郭和水(201421122017) 团队项目描述 团队项目描述是基于之前的四则运算 ...

一个优秀团队leader应该具备的几点素质

首先,技术要过硬.毕竟一个团队是在靠技术为别人创造价值的,一定程度上,团队leader的技术能力决定了整个团队的技术上限.leader对技术的坚持和追求很可能会影响团队成员对技术的坚持和追求,至少le ...

VTK中导入并显示STL、3DS文件

VTK(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和科学计算可视化.VTK是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起 ...

C++客户端访问Java服务端发布的SOAP模式的WebService接口

gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以 简单快速地开发出SOAP/XML的服务器端和客户端 Step1 使用gsoap-2.8\gsoap\bin\win32\wsdl ...

strcat实现

//将源字符串加const,表明其为输入参数 char*strcat(char*strDest,constchar*strSrc) { //后文returnaddress,故不能放在assert断言之 ...


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部