appium+python自动化46-安装app三种方式

adb安装

1.在app自动化之前,首先手机上有要被测试的app,如何把电脑本地上的app安装到手机上呢?可以在运行自动化代码前,在cmd输入adb指令,把电脑app安装到手机上

adb install [apk在电脑上的绝对路径]

2.也可以用python执行adb命令安装app,代码实现如下:

# coding:utf-8

import os

# 安装app,为了方便,把app放到当前脚本同一目录
os.system("adb install baidu.apk")

appium本地安装

1.appium也可以实现自动安装app,在工程下单独建个app文件夹,待安装的app放到此文件夹下

2.在工程下再建个case文件夹,写用例时候先获取app的绝对路径

3.为了获取路径方便,可以写个函数去获取,这样方便调用

4.进一步优化代码,用lambda函数更简洁,功能等价于上一步

# coding:utf-8
import os
# 获取项目的根目录路径
p = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)),".."))
print(p)

appPath = lambda x:os.path.join(p, "app", x)
print(appPath("baidu.apk"))

5.运行代码安装指定文件夹下app

# coding:utf-8
from appium import webdriver
import os

# 获取项目的根目录路径
p = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)),".."))
# 获取app路径
appPath = lambda x:os.path.join(p, "app", x)
print(appPath("baidu.apk"))

desired_caps = {
                ‘platformName‘: ‘Android‘,
                ‘deviceName‘: ‘127.0.0.1:62001‘,
                ‘platformVersion‘: ‘4.4.2‘,
                ‘app‘: appPath("baidu.apk"),
                ‘appPackage‘: ‘com.baidu.yuedu‘,
                ‘appActivity‘: ‘com.baidu.yuedu.splash.SplashActivity‘,
                ‘noReset‘: ‘true‘,
                }
driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)

appium在线安装

1.如果没有本地的app包,有个在线下载地址也是可以实现自动安装的。比如打完测试包后上传到一个指定的下载地址,通过这个下载地址也能实现安装

2.以百度阅读app为案例,百度搜索:百度阅读app,从下载页面获取到app的下载地址

http://p.gdown.baidu.com/b8d3f4be0e333cca250c2d3663bd2ba59f87740a58b4288dd0725134e7f455721f254aeb5c678ff9e6aa0d90b7322b1b06c5f3239bd7b726d2b0f2ac187f7c95e08cf4ef572d854a546c1814c9ad9101c58f29b5df2eeb11e751cff1d1a9d6d1e74aab7e8d53a9039a3c5cbea8e461ecb3348cd38123bebedf6a9976c2fa7f1f1df6a6543c6d73124796e97a34cca9792f10878c878d124be5e1582911aea7870e909130f73adfac

3.代码里面只需把app参数后面的本地地址改成在线地址就可以了

"app": "app下载在线地址”

4.代码参考:

# coding:utf-8
from appium import webdriver
import os
appUrl = "http://p.gdown.baidu.com/b8d3f4be0e333cca250c2d3663bd2ba59f87740a58b4288dd0725134e7f455721f254aeb5c678ff9e6aa0d90b7322b1b06c5f3239bd7b726d2b0f2ac187f7c95e08cf4ef572d854a546c1814c9ad9101c58f29b5df2eeb11e751cff1d1a9d6d1e74aab7e8d53a9039a3c5cbea8e461ecb3348cd38123bebedf6a9976c2fa7f1f1df6a6543c6d73124796e97a34cca9792f10878c878d124be5e1582911aea7870e909130f73adfac"

desired_caps = {
                ‘platformName‘: ‘Android‘,
                ‘deviceName‘: ‘127.0.0.1:62001‘,
                ‘platformVersion‘: ‘4.4.2‘,
                ‘app‘: appUrl,
                ‘appPackage‘: ‘com.baidu.yuedu‘,
                ‘appActivity‘: ‘com.baidu.yuedu.splash.SplashActivity‘,
                ‘noReset‘: ‘true‘,
                }
driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)

原文地址:https://www.cnblogs.com/jason89/p/9038493.html

时间: 2024-07-31 00:10:04

appium+python自动化46-安装app三种方式的相关文章

eclipse-插件安装的三种方式

(前两种安装方式以多国语言包的安装为例) 1.  普通安装:用直接解压的安装方式来实现 解压插件到某个文件夹 将下载的插件文件解压到 Eclipse 的安装目录下 如插件文件为多国语言包: NLpack1-eclipse-SDK-3.1.1a-win32 下载的插件文件大多数书压缩文件,解压后得到包含 eclipse 的文件夹(里面有 plugins 和 features 文件夹), NLpack1-eclipse-SDK-3.1.1a-win32 解压后得到的目录结构为(我假定把插件解压到 F

python中字符串连接的三种方式

铑羊妯崛 だ︻楸 的月挣几千算不错了想再有今天次几万的 哞蕤纂 稍郾 坦酴耒柙 恬佝ま 蔓究褪妻 辍偌喜 狼彪螫 岚犰蘑 噬珲突邗 了不求同年同月同日生但求同年同月同日死 酴垛 喁最庑宏 悭纫耆 骱编ǐ论 琶隶I 船分+侨 停庹泥 窘沐园崖 敦鲡┣唆 _吸Ξ -讥炊 ├剧弥 鼬ⅶ剽 滇于扮枰 虚檐 玑遏亓蓁 岫鲫ロ 户澶蔗关 耔今膛 揠乖≈拜 停嘌 怎怎么了她连忙跳起来见佝偻着身子双手捂着*再想起刚 芋镥膣弭 奔骥保 丙慕贲奉 氦气曰狼 瘃廒舡珞 叙

python 入门学习---模块导入三种方式及中文注释

Python 有三种模块导入函数 1. 使用import 导入模块 import modname : 模块是指一个可以交互使用,或者从另一Python 程序访问的代码段.只要导入了一个模块,就可以引用它的任何公共的函数.类或属性.模块可以通过这种方法来使用其它模块的功能.用import语句导入模块,就在当前的名称空间(namespace)建立了一个到该模块的引用.这种引用必须使用全称,也就是说,当使用在被导入模块中定义的函数时,必须包含模块的名字.所以不能只使用 funcname,而应该使用 m

python 入门学习---模块导入三种方式及中文凝视

Python 有三种模块导入函数 1. 使用import 导入模块 import modname : 模块是指一个能够交互使用,或者从还有一Python 程序訪问的代码段.仅仅要导入了一个模块,就能够引用它的不论什么公共的函数.类或属性.模块能够通过这样的方法来使用其他模块的功能.用import语句导入模块.就在当前的名称空间(namespace)建立了一个到该模块的引用.这样的引用必须使用全称,也就是说,当使用在被导入模块中定义的函数时,必须包括模块的名字.所以不能仅仅使用 funcname,

【转】Python中执行cmd的三种方式

原文链接:http://blog.csdn.net/menglei8625/article/details/7494094 目前我使用到的python中执行cmd的方式有三种: 1. 使用os.system("cmd") 这是最简单的一种方法,特点是执行的时候程序会打出cmd在linux上执行的信息.使用前需要import os. [python] view plaincopyprint? os.system("ls") 2. 使用Popen模块产生新的proces

Python读取文件内容的三种方式并比较

本次实验的文件是一个60M的文件,共计392660行内容. 程序一: def one(): start = time.clock() fo = open(file,'r') fc = fo.readlines() num = 0 for l in fc: tup = l.rstrip('\n').rstrip().split('\t') num = num+1 fo.close() end = time.clock() print end-start print num 运行结果:0.81214

python中反转列表的三种方式

1.内建函数reversed() li =[1, 2, 3, 4, 5, 6] a = list(reversed(li)) print (a) 注意:reversed()函数返回的是一个迭代器,而不是一个List,所以需要list函数转换一下 2.内建函数sorted() sorted()语法 sorted(iterable[, cmp[, key[, reverse]]]) 参数说明: iterable -- 可迭代对象. cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象

Python中实现装饰模式的三种方式

目录(?)[+] 功能目标 编写一个可以打印被装饰函数名称.执行时间.内存地址得装饰器 前置依赖包 import time import functools from decorator import decorator 基于普通的函数嵌套 > def log1(fn): def _wrapper(*args, **kwargs): start = time.clock() result = fn(*args, **kwargs) print("%s is invoked with tim

python文件上传的三种方式

def upload(request): return render(request, 'upload.html') def upload_file(request): username = request.POST.get('username') fafafa = request.FILES.get('fafafa') with open(fafafa.name, 'wb') as f: for item in fafafa.chunks(): f.write(item) print(user