前言

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 # 作者:上海-悠悠 QQ交流群:512200893 # 获取项目的根目录路径
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 # 作者:上海-悠悠 QQ交流群:512200893 # 获取项目的根目录路径
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 # 作者:上海-悠悠 QQ交流群:512200893 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)

在学习过程中有遇到疑问的,可以appium+python QQ群交流:330467341

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

  1. MySQL安装的三种方式

    .markdown-preview:not([data-use-github-style]) { padding: 2em; font-size: 1.2em; color: rgb(171, 178 ...

  2. Python实现微信支付(三种方式)

    Python实现微信支付(三种方式) 关注公众号"轻松学编程"了解更多. 如果需要python SDk源码,可以加我微信[1257309054] 在文末有二维码. 一.准备环境 1 ...

  3. Linux 软件安装的三种方式

    Linux 软件安装的三种方式 1.yum ​ 语法格式: ​ yum -y install package.name ​ -y yes # 遇到提示自动输入yes ​ 案例: 安装ifconfig命 ...

  4. Python中字符串拼接的三种方式

    在Python中,我们经常会遇到字符串的拼接问题,在这里我总结了三种字符串的拼接方式:     1.使用加号(+)号进行拼接 加号(+)号拼接是我第一次学习Python常用的方法,我们只需要把我们要加 ...

  5. python 获取表单的三种方式

    条件:urls.py文件中配置好url的访问路径.models.py文件中有Business表. 在views.py文件中实现的三种方式: from app01 improt models def b ...

  6. python之配置日志的三种方式

    以下3种方式来配置logging: 1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数: 2)创建一个日志配置文件,然后使用fileCo ...

  7. eclipse-插件安装的三种方式

    (前两种安装方式以多国语言包的安装为例) 1.  普通安装:用直接解压的安装方式来实现 解压插件到某个文件夹 将下载的插件文件解压到 Eclipse 的安装目录下 如插件文件为多国语言包: NLpac ...

  8. 【Python】蟒蛇绘制(三种方式+import用法)

    第一种方式不会出现函数重名问题,而第二种会.可以用第三种解决问题 方式一: #pythondraw.py import turtle #引用 绘制(海龟)库 turtle.setup(650,350, ...

  9. Appium+Python自动化 3 -获取 app 包名和 activity

    方法一: ①手机通过USB连接电脑 ②打开手机上被测app ③在电脑上 dos命令窗口,输入命令 adb shell dumpsys window w | findstr \/ | findstr n ...

随机推荐

  1. 【VI Script】你不知道的脚本编程

    前言 近期,小黑在写程序的时候,经常会遇到一些重复性的工作.尤其是在写到QMH(Queued Message Handler)程序时,经常需要创建UI界面上的一些控件引用,并且在程序中捆绑成簇使用. ...

  2. Leetcode 之Same Tree(48)

    用递归比较简单,这里用迭代的方式实现.注意什么时候返回true,什么时候返回false. bool isSameTree(TreeNode *p, TreeNode *q) { stack<Tr ...

  3. jdbc操作数据库以及防止sql注入

    public class pr { public static void main(String[] args) { Connection conn = null; Statement st = nu ...

  4. Intersection of Two Linked Lists——经典问题

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...

  5. HTTP资源合集

    (1)MoZILLA开发者web技术文档之HTTP 未完待续...

  6. 【剑指offer】面试题 29. 顺时针打印矩阵

    面试题 29. 顺时针打印矩阵 题目描述 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  7. 编写.gitignore 文件

    讲代码 放入 Git 仓库中进行版本控制管理时,有些文件是不需要放入Git 中,比如 Maven 生成的target 目录,IDEA/Eclipse的工程文件, 在项目的根目录 下 添加一个名为.gi ...

  8. CodeForces 740A Alyona and copybooks

    完全背包. 直接做个背包容量为$100000$的完全背包,这样就可以避免繁琐的分类讨论了. #pragma comment(linker, "/STACK:1024000000,102400 ...

  9. 洛谷P3916 图的遍历 [图论,搜索]

    题目传送门 图的遍历 题目描述 给出 N 个点, M条边的有向图,对于每个点 v ,求 A(v) 表示从点 v 出发,能到达的编号最大的点. 输入输出格式 输入格式: 第1 行,2 个整数 N,M . ...

  10. oracle中clob字段怎么查询非空列_20180517

    select * from uap_groupsynlogvo a where a.log_msg is not null ; 附加demo的建表脚本跟业务数据. 链接:https://pan.bai ...