前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Appium自动化(八)通过脚本自动化获取设备deviceName和platformVersion

Appium自动化(八)通过脚本自动化获取设备deviceName和platformVersion

作者头像
雷子
发布2021-03-15 15:51:10
1.8K0
发布2021-03-15 15:51:10
举报
文章被收录于专栏:雷子说测试开发

Appium系列分享

Appium自动化(一)常用的API接口

Appium自动化(二)常用的API接口

Appium自动化(三)常用的API接口

Appium自动化(四)常用的API接口

Appium自动化(五)常用的API接口

Appium自动化(六)Appium启动app

Appium自动化(七)通过脚本自动化获取apk的包名和对应启动activity


前言

我们在上节课,通过自动化获取了apk的包名和activity。那么我们设备的deviceName和platformName是否可以通过自动化获取吗?本文带你解密。

讲解

安卓设备,我们可以通过adb来获取一些安卓设备的一些信息。那么我们要查询的deviceName怎么获取呢,其实很简单。

代码语言:javascript
复制
adb  devices

我们看下展示的结果:

那么我们要取出来的是192.168.56.104:5555,那么我们应该怎么通过自动化来获取呢,我们可以利用os模块来获取。

代码语言:javascript
复制
import os

我们可以用popen来获取 。

代码语言:javascript
复制
import  osdef  get_devices():    cmd="adb devices"    reslut=os.popen(cmd).readlines()    print(reslut)get_devices()
代码语言:javascript
复制

结果展示

那么我们可以取里面的值。去掉第一行,并且去掉\n的行,然后得到,我们用\t切割。取第一个就可以获取。代码实现如下:

代码语言:javascript
复制
import  osdef  get_devices():    cmd="adb devices"    reslut=os.popen(cmd).readlines()[1:]    for item in reslut:        if item!="\n":            return str(item).split("\t")[0]rselut=get_devices()print(rselut)

那么我们怎么获取platformVersion呢。我们直接使用adb获取。

代码语言:javascript
复制
adb shell getprop ro.build.version.release

同样我们可以用os模块来实现。

代码语言:javascript
复制
def  getPlatForm():    cmd='adb shell getprop ro.build.version.release'    reslut = os.popen(cmd).readlines()[0]    print(str(reslut).split("\n")[0])getPlatForm()

结果展示如下:

那么我们最后应该怎么在之间的脚本实现呢,其实很简单。那么我们来看看具体的代码是怎么实现呢?

代码展示

代码语言:javascript
复制
from appium import webdriverfrom androguard.core.bytecodes.apk import APKimport  os
apk_path="/Users/lileilei/Downloads/com.tencent.mobileqq_8.5.0_1596.apk"def  get_devices():    cmd="adb devices"    reslut=os.popen(cmd).readlines()[1:]    for item in reslut:        if item!="\n":            return str(item).split("\t")[0]
def  getPlatForm():    cmd='adb shell getprop ro.build.version.release'    reslut = os.popen(cmd).readlines()[0]    return  str(reslut).split("\n")[0]
def get_apkname(apk):    a = APK(apk, False, "r")    return a.get_package()def get_apk_lautc(apk):    a = APK(apk, False, "r")    return a.get_main_activity()desired_caps = {                'platformName': 'Android',                'deviceName': get_devices(),                'platformVersion':getPlatForm(),                 'appPackage': get_apkname(apk_path),#包名                'appActivity': get_apk_lautc(apk_path) ,# apk的launcherActivity                'skipServerInstallation':True                }driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

后记

本文介绍的只是简单的一个设备的信息,后续要拓展到多个设备,多个系统,还需要对里面的内容进行调整。后续会持续分享。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档