前言

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. FineReport——自定义控件实现填报提交事件和校验

    在报表内部或者在引用报表的HTML页面,定义一个按钮标签,通过FR提供的方法实现提交功能. <button onclick="_g('${sessionID}').writeRepor ...

  2. CSS3 icon font

    大家都知道现在各个浏览器都支持CSS3的自定义字体(@font-face),包括IE6都支持,只是各自对字体文件格式的支持不太一样.那么对于网站中用到的各种icon,我们就可以尝试使用font来实现, ...

  3. leetcode 之Rotate List(18)

    这题我的第一想法是用头插法,但实际上并不好做,因为每次都需要遍历最后一个.更简单的做法是将其连成环,找到相应的位置重新设头结点和尾结点.这过 有很多细节需要注意,比如K有可能是大于链表长度的,如何重新 ...

  4. HDU-4255

    A Famous Grid Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. IIS 7浏览网站出错,错误编码 http 503 service unable

    由于重新装了Microsoft Visual Studio 2010,结果运行出错,检查发现应用程序池该项目已停止. 解决办法: 1.打开IIS:开始菜单>运行 2.输入“inetmgr”回车 ...

  6. hdu 1080(LCS变形)

    Human Gene Functions Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  7. c# 发送web请求

    我们目前涉及到的现有的接收请求方式有三种, 第一种: 页面式的Form表单 第二种: 服务的webservice形式的xml 第三个: restful风格的post包体json 第一种比较老,博客园的 ...

  8. jquery&javascript 跨域jsonp

    $(function(){ $.ajax({ type: "get", async: false, url: "http://flightQuery.com/jsonp/ ...

  9. Interllij IDEA 使用Git工具

    1.git简介 git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可 ...

  10. android studio偏好设置

    1.主题设置,可以选择白色主题及黑色主题 2.代码字体大小 3.生成新的主题 主题命名 4.加入代码时,自动引用库 5.合作菜单生成菜码 6.命名空间设置 字段设置为大写,静态字段设置为小写 SDK设 ...