Appium基础篇3-第一个appium自动化脚本之自动安装apk包到手机

这篇,我们开始来一个实战练习,如何通过appium自动把电脑上一个安卓程序包给安装到一台安卓手机中。在写脚本之前,我们需要统一下方法和工具。我们知道Appium和selenium一样都支持Java和Python,当然还有其他几个语言。那么,我们选择哪个语言来写我们的自动化测试脚本?Java还是Python?我也是第一次学习appium在安卓上的app自动化测试。Java和Python我都会,至少用来写脚本没有问题。我在写第一个例子之前,我搜索查询了一下,国内和国外,关于Python+Selenium的视频教程,几乎没有,文章确实有,但是没有系统性的学习系列。反而Java+Appium很多资料,视频资料也有。所以,我觉得采用Python语言来写Appium的安卓端自动化测试脚本。

1.安装Appium client for python

我们已经确定了Python来写Appium脚本,那么我们需要下载一个Appium Client for Python语言。下载方法和简单,直接在电脑打开cmd界面,这里我们用Python3,输入命令:python -m pip install Appium-Python-Client,回车就自动开始安装,安装过程很快,不到十秒结束。安装了这个,我们才可以在脚本中写导入包语句,例如 from appium import webdriver,看到这个是不是很熟悉,所以,如果学习了Selenium,会更好加速学习appium自动化测试。

2.编程环境安装

这里,我还是采用Pycharm这个Python主流的IDE工具。虽然,这里是学习,每次学习一个API或者自动化一个场景,我们只需要写一个demo文件,运行测试一下,但是我还是建立了一个项目的结构,以后迟早会转移到自动化框架设计上来。例如,我把apk包放在了当前项目根目录下的app文件夹。需要去下载一个手机百度,安卓端的apk包。

一开始,我只在demo这个包下写脚本来练习appium的自动化测试,其他的目录如果没有提到,就全部默认是空文件或者空包,暂时不用去管。

3. 第一个脚本:自动化安装apk包到手机

上面的desired_caps是一个字典,一开始定义一个空字典,然后根据键和值,设置了多个参数,这些参数就组成了一个字典对象。为什么需要这个字典参数对象呢?因为,需要手机发送一些手机参数给Appium服务器,这样Appium服务器才能处理请求,才能和手机中的程序联系起来。
       windows上的appium是一个服务器,启动后之后,如果是第一次运行上面脚本,appium会在你手机里安装两个软件,一个是Appium Settings, 一个unlock。Appium Settings是一个client端,负责解释和执行Windows端appium的命令,而unlock只是一个用来唤醒手机屏幕,解锁的功能。第一次运行上面脚本,时间有点慢,因为先要安装Appium Settings和Unlock到你手机上,然后执行ADB命令去安装shoujibaidu.apk包,最后启动这个手机百度。启动过程,安卓上会弹出权限请求,例如sd卡读取权限,地理位置获取权限,这些,你需要手动去点击同意。目前,没有更好方法去自动化处理这个权限弹窗,因为这个不是一个app或者浏览器上的alert弹窗,所以,appium暂时不支持自动化这样操作。

4.查看Appium服务运行日志

运行脚本结束,我们点击windows上Appium界面的stop server按钮,看到日志文件,当然可以到处到一个xxxx.log文件,用notepad++来看日志。日志太多,这里简单来看一些,我们很容易看懂的内容。

4.1 Appium创建一个连接session

[info] [Appium] Welcome to Appium v1.6.5
[info] [Appium] Appium REST http interface listener started on 0.0.0.0:4723[info] [HTTP] --> POST /wd/hub/session {"capabilities":{"firstMatch":[],
"alwaysMatch":{"platformName":"Android","platformVersion":"6.0.1","deviceName":"KIW-AL10","app":"C:\\Users\\Administrator\\PycharmProjects\\
appium_android_framework\\app\\shoujibaidu.apk"}},"desiredCapabilities":{"platformName":"Android","platformVersion":"6.0.1",
"deviceName":"KIW-AL10","app":"C:\\Users\\Administrator\\PycharmProjects\\appium_android_framework\\app\\shoujibaidu.apk"}}
[debug] [MJSONWP] Calling AppiumDriver.createSession() with args: [{"platformName":"Android","platformVersion":"6.0.1",
"deviceName":"KIW-AL10","app":"C:\\Users\\Administrator\\PycharmProjects\\appium_android_framework\\app\\shoujibaidu.apk"},null,{"firstMatch":[],
"alwaysMatch":{"platformName":"Android","platformVersion":"6.0.1","deviceName":"KIW-AL10","app":"C:\\Users\\Administrator\\PycharmProjects\\
appium_android_framework\\app\\shoujibaidu.apk"}}]
[debug] [BaseDriver] Event 'newSessionRequested' logged at 1504948606634 (17:16:46 GMT+0800 (中国标准时间))
[info] [Appium] Creating new AndroidDriver (v1.20.0) session
[info] [Appium] Capabilities:
[info] [Appium]   platformName: 'Android'
[info] [Appium]   platformVersion: '6.0.1'
[info] [Appium]   deviceName: 'KIW-AL10'
[info] [Appium]   app: 'C:\\Users\\Administrator\\PycharmProjects\\appium_android_framework\\app\\shoujibaidu.apk'
[debug] [AndroidDriver] AndroidDriver version: 1.20.0
[info] [BaseDriver] Session created with session id: f61bbf84-4eba-4500-b3f3-5a810117e323
[debug] [AndroidDriver] Getting Java version[info] [AndroidDriver] Java version is: 1.8.0_121
[info] [ADB] Checking whether adb is present
[info] [ADB] Using adb.exe from C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe
[info] [AndroidDriver] Retrieving device list
[debug] [ADB] Trying to find a connected android device
[debug] [ADB] Getting connected devices...[debug] [ADB] 1 device(s) connected
[info] [AndroidDriver] Looking for a device with Android '6.0.1'
[debug] [ADB] Setting device id to WPV0216912000686
[info] [ADB] Getting device platform version
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
       上面从启动Appium服务,然后读取Capablilities参数,然后验证ADB是否安装,验证apk包是否放在设置的路径下,然后成功连接手机。后面的日志,也是一堆通过ADB命令来获取手机设备信息和安装和卸载apk包。
————————————————
版权声明:本文为CSDN博主「Anthony_tester」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011541946/article/details/77916671

appium自动化脚本之自动安装apk包到手机相关推荐

  1. Appium基础篇3-第一个appium自动化脚本之自动安装apk包到手机

    这篇,我们开始来一个实战练习,如何通过appium自动把电脑上一个安卓程序包给安装到一台安卓手机中.在写脚本之前,我们需要统一下方法和工具.我们知道Appium和selenium一样都支持Java和P ...

  2. Android实现文件下载并自动安装apk包

    安装: String str = "/CanavaCancel.apk"; String fileName = Environment.getExternalStorageDire ...

  3. android apk自动安装包下载,Android实现应用下载并自动安装apk包

    安装: String str = "/CanavaCancel.apk"; String fileName = Environment.getExternalStorageDire ...

  4. Java script生成apk_lua脚本实现自动生成APK包

    可以根据需要自行扩展了. 使用前tool path 还有 target path的前两个还是需要自己设置下. 一些小的函数 jit_file copy_file 我就不贴了 比较简单,用来luajit ...

  5. python自动安装apk文件

    最近在学习python,在前一段时间用dos写了一脚本,自动安装apk文件,于是也试着用python写了一这样的脚本. dos脚本地址:http://blog.csdn.net/lyhdream/ar ...

  6. 电脑控制手机,教你通过脚本实现自动安装、卸载软件

    电脑可以控制手机吗?可以批量控制多台手机吗?当然可以!不仅可以批量控制还可以用脚本方式自动安装.卸载手机上的应用程序.想用脚本的方式自动安装.卸载手机上的应用程序怎么办?很简单,用 Total Con ...

  7. android.os.FileUriExposedException 自动安装APK报错 5分钟搞定Android 7.0+ FileProvider

    android.os.FileUriExposedException 自动安装APK报错  5分钟搞定Android 7.0+ FileProvider 适配步骤: 1. 创建file_paths.x ...

  8. Android使用adb有线跟无线安装apk包

    有线的情况下 1.手机USB与电脑相连,win+r打开输入cmd命令 2.adb devices查看是否已连接设备 3.adb install 包(地址)安装apk包 也可以通过adb install ...

  9. adb命令 (安装apk包格式:adb install 电脑上apk地址包名)

    1.adb基础命令 配置好环境变量后,在cmd窗口打开命令行,敲adb device,验证adb连接设备成功 (前置条件:adb环境配置成功.开发者选项开启了USB调试模式) 1.1.进入手机的设置- ...

最新文章

  1. [zz]Ubuntu建立本地源实用案例
  2. 单核工作法16:循序渐进(下)
  3. c++面向对象高级编程 学习一 不带指针的类
  4. 如何利用python将mp4文件转换为gif文件 + 代码分享 另附在线转换网址
  5. 为VS2010添加背景图
  6. 《完全写作指南》读书笔记
  7. 2021年危险化学品经营单位安全管理人员考试及危险化学品经营单位安全管理人员考试资料
  8. 分析113个前缀在各大考纲词汇中的作用(二)总结精选篇
  9. svm算法 最通俗易懂讲解
  10. 暮然回首,发现自己已经老了
  11. 操作系统是管理计算机软件和硬件的,计算机操作系统是管理计算机硬件和软件的什么...
  12. 红米5无线网连接上但是没有网络连接服务器,红米路由器wifi已连接但无法访问互联网怎么办 | 192路由网...
  13. CMNET和CMWAP的区别和适用范围
  14. Android 插件化学习
  15. uCOS2的events事件源码分析-第4季第5部分-朱有鹏-专题视频课程
  16. 互联网创业论坛荣誉出品
  17. @Value(“#{}“) 与 @Value(“${}“) 的区别
  18. nextcloud安装日历插件使用并设置导入导出和云端同步(安卓手机和ios手机)
  19. win7下如何使用turbo C2.0
  20. 网络游戏运营数据分析二

热门文章

  1. python后端与前端数据交互_前端与后端的数据交互(jquery ajax+python flask)
  2. scrapy Filtered offsite request to
  3. 美SEC主席最新表态:PoS代币可能是证券
  4. 成都大运会「数智竞技邀请赛」启动,「开悟」平台为全球青年提供AI竞技舞台...
  5. docker原理详解
  6. LCD显示异常分析——开机闪现花屏
  7. BigDecimal.setScale用法
  8. java 商品类目 递归
  9. Nginx配置文件nginx.conf的基本配置
  10. QPM 之悬浮窗助力性能优化