简介

  “千呼万唤始出来,犹抱琵琶半遮面”,经过前边的各项准备工作,终于才把appium这位琵琶女请出来。那么下边就由宏哥给各位看官、小伙伴们和童鞋们来引荐这位美女(帅哥)。这一篇主要是对前边的内容做一个小小的总结,我们不能只顾得埋头拉车,不记得抬头看路可不行哦!

说明:Appium--奴家的大号,提起奴家的大号在江湖上也是无人不知,无人不晓。奴家==Appium;

一、奴家自我介绍   

奴家是一款开源的自动化测试工具,奴家可以支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用(APP)。

1、 请奴家来进行弹奏的好处(使用appium进行自动化测试的好处)

奴家在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。

奴家支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架.Appium实现了真正的跨平台自动化测试。(本文主要介绍Python的用法)

2、奴家的五脏六腑(Appium架构)

奴家是一个用Node.js编写的HTTP server,它创建、并管理多个 WebDriver sessions 来和不同平台交互,如 iOS ,Android等等.

奴家开始一个测试(一曲弹奏)后,就会在被测设备--琵琶(手机)上启动一个 server ,监听来自 Appium server(看官、观众)的指令. 每种平台像 iOS 和Android都有不同的运行、和交互方式。所以奴家会用某个桩程序“侵入”该平台,并接受指令,来完成测试用例的运行(曲谱的弹奏)。

琵琶女: 下面奴家把时间交还给宏哥,让宏哥继续来引荐奴家。

宏哥:好了各位看官、小伙伴们和童鞋们不要再盯着美女了,把头往宏哥这边转一转,把目光往宏哥这边汇聚一下。

宏哥:哎哎哎,说你了,把头转到宏哥这边,听宏哥给您慢慢道来,哎哎哎,对!不要看别人说的就是你。

宏哥:好了,你们都这样,宏哥就不废话了,还是把头转回去。直接开始正题,进行移动端自动化测试实战(琵琶弹奏-十面埋伏)

二、奴家实战技艺(以真机<琵琶>为例)

各位看官这里是给大家列举的一些琵琶女的指法(命令)

aapt dump badging D:\XXX.apk  获取安装包的所有信息

adb devices(查看手机是否连接到电脑)

adb shell pm list packages:列出所有的包名,找到所查看包的包名。

adb shell dumpsys package com.android.XXX:查看某个包的具体信息

其它:

adb devices:查看Android设备是否连接到电脑。

adb shell dumpsys activity:查看当前运行的是哪个activity,运行的一些进程等

adb shell dumpsys activity activities

adb shell pm list packages:列出所有的包名。

adb shell dumpsys package:列出所有的安装应用的信息

adb shell dumpsys package com.android.XXX:查看某个包的具体信息

adb shell dumpsys activity | grep mFocusedActivity:查看当前resume的是哪个activity

adb logcat | grep ActivityManager:查看当前正在运行的Activity

adb logcat | grep Displayed:查看当前正在运行的Activity

1、 连接真机或者模拟器 -- 这里是琵琶女手指和琵琶如何接触连接

1)连接手机时注意选择手机的开发者模式,cmd打开命令行窗口,输入adb devices获取到设备的deviceName。

2)启动模拟器,连接模拟器AVD(Google自带),cmd打开命令行窗口,输入adb devices获取到设备的deviceName

3)启动模拟器,连接夜神模拟器,要注意先输入  nox_adb.exe connect 127.0.0.1:62001(相当于插入数据线),再继续,输入adb devices

2、获取Activity(获取曲谱中曲调,就和我们现在音乐中的“到瑞秘法扫垃圾”差不多)

1)cmd打开命令行窗口,输入aapt dump badging D:\XXX.apk(xxx指安装包名,D:\是指路径)直接查看需要测试app安装包的具体信息。

2)标记的就是包名,继续往下拖拽,可以找到activity的信息。

这里的红圈就可以看到activity的信息。这两个值,在appium脚本中都需要提前获取到,所以需要提前介绍这个获取方法。如果你觉得在cmd里面不好看,你可以把cmd信息导出到一个txt文件,例如 aapt dump badging shoujibaidu.apk > 123.txt 回车后,会在桌面生成一个123.txt文件,你可以打开,通过查询找到这些信息。通过上面的方法,只要我们有android SDK环境,那么我们就可以获取到任意一个包的包名和Activity信息。

3、启动Appium

1)  双击桌面上的appium图标打开,点击Android Settings进行设置。

2)将上方获取到的真机的deviceName填入 ,选择platformName和platformVersion

3)将服务的session配置成可重写(非必要的配置)

4)配置好后,点击右上角的启动按钮进行启动即可。

5)启动成功,下一步该写代码了。

4、将上方得到的设备和安装包信息写入脚本中

 # coding=utf-
# .先设置编码,utf-8可支持中英文,如上,一般放在第一行 # .注释:包括记录创建时间,创建人,项目名称。
'''
Created on --
@author: 北京-宏哥 QQ交流群:
Project:初始琵琶女appium
'''
# .导入模块
from appium import webdriver
import time
desired_caps = {}
desired_caps['platformName'] = 'Android' #android的apk还是IOS的ipa
desired_caps['platformVersion'] = '8.0' #android系统的版本号
desired_caps['deviceName'] = 'emulator-5554' #手机设备名称,通过adb devices 查看
desired_caps['appPackage'] = 'com.taobao.taobao' #apk的包名
desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome' #apk的launcherActivity
# desired_caps['unicodeKeyboard'] = True #使用unicodeKeyboard的编码方式来发送字符串
# desired_caps['resetKeyboard'] = True #将键盘给隐藏起来

5、查找app定位元素

1)启动Android SDK中的一个神器可以查找app的定位元素进行脚本的编写。在Android SDK中的tools中有一个uiautomatorviewer.bat,如下图所示:

2)点击uiautomatorviewer.bat进行启动,左上角一共四个按钮,作用分别是打开本地文件(open)、Device Screenshot (uiautomator dump)dump页面、dump压缩格式的页面、保存;启动后点击左上角第三个图标进行真机界面的呈现。

3)选择设备模拟器或者真机

4)第一次连接会比较慢,耐心等候一下,连接好后以后就快了。我这里以百度界面为例。

这是连接夜神模拟器后的界面显示。这样就可以根据id、class、text等定位元素进行定位了。

 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.find_element_by_id("index-kw").click()
driver.find_element_by_id("index-kw").clear()
driver.find_element_by_id("index-kw").send_keys('appium测试') driver.find_element_by_id("index-bn").click() driver.quit()

三、以淘宝APP为实例

1、实例代码

2、代码运行结果

3、appium运行结果

4、模拟器运行结果

5、参考代码

 # coding=utf-
# .先设置编码,utf-8可支持中英文,如上,一般放在第一行 # .注释:包括记录创建时间,创建人,项目名称。
'''
Created on --
@author: 北京-宏哥 QQ交流群:
Project:学习和使用python代码appium+pycharm+连接夜神模拟器
'''
# .导入模块
from appium import webdriver
import time
desired_caps = {}
desired_caps['platformName'] = 'Android' #android的apk还是IOS的ipa
desired_caps['platformVersion'] = '8.0' #android系统的版本号
desired_caps['deviceName'] = '127.0.0.1:62001' #手机设备名称,通过adb devices 查看
desired_caps['appPackage'] = 'com.taobao.taobao' #apk的包名
desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome' #apk的launcherActivity
#desired_caps['unicodeKeyboard'] = True #使用unicodeKeyboard的编码方式来发送字符串
#desired_caps['resetKeyboard'] = True #将键盘给隐藏起来
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #启动服务器地址,后面跟的是手机信息
# 休眠五秒等待页面加载完成
time.sleep() driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()
time.sleep()
driver.find_element_by_id("com.taobao.taobao:id/searchEdit").clear()
time.sleep()
driver.find_element_by_id("com.taobao.taobao:id/searchEdit").send_keys("琵琶")
time.sleep()
driver.find_element_by_id("com.taobao.taobao:id/searchbtn").click() # driver.quit()

至此运行脚本即可进行自动化测试。(琵琶女弹奏结束,响起来雷鸣般的掌声,琵琶女双手抱拳,豪气十足退出舞台)

小结

1、adb.exe connect 127.0.0.1:62001和nox_adb.exe connect 127.0.0.1:62001的效果是一样的,前提就是你已经配置好系统变量和解决了版本冲突。

2、好了有关appium的总结就到这里了,欲知后事如何,且听下回分解。嘿嘿!!!

宏哥不能保证所整理都符合大家的口味,但我能保证每一篇都是用心去写和用心去整理,我始终认同“分享的越多,你的价值增值越大”,欢迎大家关注我的博客和个人公众号的技术分享。在分享中进步,越努力越幸运,期待我们都有美好的明天!

支持宏哥的朋友们和宏哥的宏粉记得点波推荐哦,您的肯定就是我进步的动力。鄙人先在这里给您道谢了,谢您嘞~~

个人公众号(因为许多文章都被搬到别人的公众号里了,还是原创,所以宏哥果断也开一个公众号。打算与博客园文章同步,希望大家随时随地学习与进步):

微信群(因为有人给我发短消息说公司不让用QQ,就帮忙建立一个微信群,欢迎加入讨论和交流)

最新文章

  1. Ajax制作智能提示搜索
  2. Leetcode: Unique Substrings in Wraparound String
  3. Dubbo的使用及原理浅析.
  4. 【转】Struts1.x系列教程(5):HTML标签库
  5. HackerRank &quot;Prim&#39;s (MST) : Special Subtree&quot;
  6. C#函数式程序设计之局部套用与部分应用
  7. 用CSS3制作的旋转六面体动画
  8. 2016年JavaScript技术栈展望
  9. 转 oracle 11g 导出空表
  10. Java应用程序可执行jar文件与服务器交互中文乱码
  11. mybatis学习笔记二(接口注解)
  12. 【贪心】 poj 1032 和为n的若干数最大乘积
  13. LeetCode之“链表”:Reverse Linked List &amp;&amp; Reverse Linked List II
  14. 全屏slider--swiper
  15. 读书笔记之第五回深入浅出关键字---把new说透
  16. Where do I belong (freeCodeCamp)
  17. 原型设计工具—Axure
  18. Project facet Java version 1.8 not supported
  19. OpenCV2类批量处理文件夹及文件图像 及批量处理后保存到txt文件
  20. ZT 二叉树的非递归遍历

热门文章

  1. 2019 梆梆安全java面试笔试题 (含面试题解析)
  2. i春秋四周年福利趴丨一纸证书教你赢在起跑线
  3. OC-RunLoop运行循环
  4. 软工Alpha七天冲刺
  5. 我的第一次diy装机记录——小白的装机篇
  6. Win平台下窗口操作(Unity)
  7. conan使用(五)--打包chromium-base
  8. [网络] 在浏览器输入URL回车之后发生了什么
  9. 429 too many requests错误出现在wordpress后台更新及官网的5种解决方法
  10. TCP/IP协议族(五)