appium自动化测试实战详解及框架搭建

一、Appium的介绍    

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

1、 使用appium进行自动化测试的好处

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

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

2、Appium架构

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

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

      下面直接开始正题,进行移动端自动化测试实战。

二、Appium实战(以真机为例)

       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、 连接真机或者模拟器(此处以真机为例)

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

2.获取Activity

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

  标记的就是包名,继续往下拖拽,可以找到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、将上方得到的设备和安装包信息写入脚本中

desired_caps = {
    'platformName': 'Android',
    'deviceName':'8TB6V4ZPZ54LPJ5P',
    'platformVersion': '5.1',
    'app': PATH(r'D:\shell_customer-debug.apk'),
    'appPackage': 'com.jyibb.shell_customer',
    'appActivity': 'com.jyibb.module_launch_customer.SplashActivity',    # 'unicodeKeyboard': 'True',#此两行是为了解决字符输入不正确的问题
    # 'resetKeyboard': 'True'   #运行完成后重置软键盘的状态

5、查找app定位元素

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

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

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

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

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.find_element_by_id("com.baidu.searchbox:id/baidu_searchbox").click()
driver.find_element_by_id("com.baidu.searchbox:id/SearchTextInput").clear()
driver.find_element_by_id("com.baidu.searchbox:id/SearchTextInput").send_keys('appium测试')
 
driver.find_element_by_id("float_search_or_cancel").click()
driver.find_element_by_id("floating_action_button").click()
 
driver.quit()

三.下方直接上完整代码,以我自己的app为例

#coding:utf-8
 
from appium import webdriver
import time,os
 
PATH = lambda p:os.path.abspath(os.path.join(os.path.dirname(__file__),p))
 
#设备及安装包信息
desired_caps = {
    'platformName': 'Android',
    'deviceName':'8TB6V4ZPZ54LPJ5P',
    'platformVersion': '5.1',
    'app': PATH(r'D:\shell_customer-debug.apk'),
    'appPackage': 'com.jyibb.shell_customer',
    'appActivity': 'com.jyibb.module_launch_customer.SplashActivity',
    # 'unicodeKeyboard': 'True',
    # 'resetKeyboard': 'True'
}
 
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(5)#等待时间可根据自己的情况进行添加
 
driver.find_element_by_id("com.jyibb.shell_customer:id/layout_main_header_mine").click()
time.sleep(5)
 
driver.find_element_by_id("com.jyibb.shell_customer:id/login_phone_number_p").send_keys('15000000000')
driver.find_element_by_id("com.jyibb.shell_customer:id/login_password_p").click()
driver.find_element_by_id("com.jyibb.shell_customer:id/login_password_p").send_keys("111111q")
 
time.sleep(5)
driver.find_element_by_id("com.jyibb.shell_customer:id/bt_login_p").click()

     至此运行脚本即可进行自动化测试。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值