测试工具之Appium 测试APK
白羽 2018-12-26 来源 :网络 阅读 1518 评论 0

摘要:本文将带你了解测试工具Appium 测试APK,希望本文对大家学测试工具有所帮助。

    本文将带你了解测试工具Appium 测试APK,希望本文对大家学测试工具有所帮助。




   

  介绍

  Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持iOS、Android及FirefoxOS平台测试。Appium使用WebDriver的json   wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。

  特点:

  跨架构

  跨设备

  跨语言

  跨app

  不依赖源代码

  不限制测试框架和平台

  Appium的加载流程

  调用android   adb完成基本的系统操作

  向android上部署bootstrap.jar包并启动

  Forward   android的端口到pc机器上

  Pc上监听端口接受请求,使用webdriver协议

  分析命令并转通过forward的端口发给   bootstrap.jar

  Bootstrap.jar接受请求并把命令发给   uiautomator或者插桩体系

  如:执行send_keys命令,发送到remote webdriver   /wd/hub/session/xxx/keys,然后pc处理请求并转发给android和iphone,接着Bootstrap.jar调用uiautomator,Uiautomator调用settext方法

  实际应用(以Android平台为例)

  1、安装jdk

  我装的jdk1.8.0_20

     

  2、安装Android   studio,使用其中的sdk

   

     

  3、sdk环境配置

  1)在环境变量的系统变量中新建变量ANDROID_HOME,变量值就是adk对应的路径

     

  2)点击编辑系统变量path,添加sdk的tools和platform-tools

     

  3)点击确定,在cmd下运行adb   devices

   

  出现下面的就是正确了

  如果只显示了list   of devices attached 则需先在命令行输入adb connect 127.0.0.1:62001(为了连接到夜神模拟器),再输入adb   devices即可

  4、安装模拟器(模仿Android的环境)

  可以使用Android自带的模拟器,这里我使用的是夜神模拟器(相对较为流畅)

     

  5、启动模拟器,出现桌面

     

  6、安装Python

  7、安装appium

  8、安装Appium-client

  注意:ip命令需要到python的scripts目录下用(因为pip.exe在那)

  cmd下跳转到Python的script目录下,输入pip   install   appium-client,则自动安装

  9、双击打开ANDROID_HOME/tools下的uiautomatorviewer.bat

  出现以下界面

     

  点击左上角第二个按钮,就可以显示模拟器中的界面

     

  如果报错,一般是因为abd的问题,则再重复3、3)步骤则可以解决

  这个应用是可以对apk中的元素进行定位,方便写Python脚本

  Uiautomator具体的使用方法:

  先找index,再找text,若再找不到则尝试找resource-id,再不行则尝试找父类,再不行就只能通过坐标

  通过xpyth定位:

  findElementByXPath("//android.widget.TextView[10]")   xpath下标从1开始,使用完整的classname

  通过id定位:findElementById("com.xwtec.zhy.xwlottery:id/grid_item_tv_red");

  find_element_by_name(name对应uiautomator扫描后text的内容)

  find_element_by_id(id对应resource-id)

  find_element_by_class_name(class_name对应class)

  find_element_by_accessibility_id(accessibility_id对应content-desc)

  定位到某个文本框,并输入内容:

  text   =   driver.find_element_by_id("com.changhong.smartalbum:id/passwd_edit")   text.send_keys("123456")

  滑动屏幕:

  获取屏幕尺寸   width=self.driver.get_window_size()['width']   height=self.driver.get_window_size()['height']

  滑动屏幕   driver.swipe(width*9/10, height*1/2, width*1/10, height*1/2,   1000)

  推荐一个网址里面有一些具体的Appium   Python的用法://blog.csdn.net/alvin_lam/article/details/50717338

  10、编写Python测试脚本

  pyunit介绍:pyunit被称作python版本的junit,一般python安装好即带有unittest,检验unittest是否存在的方法:import   unittest

  下面是一些Python脚本中操作app的用法:

  检查app安装情况(返回true/false),   driver.is_app_installed(package_name)

  安装app   driver.install_app("x:/xxx.apk")

  卸载app   driver.remove_app(package_name)

  打开通知栏   driver.open_notifications()

  关闭app   driver.close_app()

  启动app   driver.launch_app()

  锁定屏幕x秒(不是很好用,锁定后屏幕无法解锁,导致无法后续,本人未找到解锁的方法)   driver.lock(X)

  模拟摇晃设备   driver.shake

  重置应用   driver.resetApp()

  检查是否存在某个activity(未找到则返回异常)   driver.find_element_by_id(activity)

  获取当前的activity:   activity = self.driver.current_activity print(u"当前的activity是:",   activity)

  等待activity启动直到x秒超时,每隔y秒扫描一次   driver.wait_activity(activity, x, y)

  将app置于后台运行x   s(注意:测试发现置于后台数秒后变为前台时,将是重新启动app,进入首页,而不是切入后台时的界面)   driver.background_app(x)

  打印可用的输入法 IME_LISE =   driver.available_ime_engines   print(IME_LISE)

  检查设备是否有输入法服务活动,返回True/False   driver.is_ime_active()

  激活安卓设备中的指定输入法(设备可用输入法可以从“available_ime_engines”获取)")   driver.activate_ime_engine(IME_LISE[-1])

  退出键盘   driver.hide_keyboard()

  11、运行Python脚本,若adb没有启动,重启adb   //jingyan.baidu.com/article/d169e186b38f37436611d8fb.html

  如:使用以下模板:(以爱壁纸的登录页面为例)

  #coding:utf-8

  #Import   the common package

  import   os

  import unittest

  from   appium import webdriver

  from time import   sleep

  #设置路径信息

  PATH = lambda   p: os.path.abspath(

  os.path.join(os.path.dirname(__file__),   p)

  )

  class   LoginAndroidTests(unittest.TestCase):

  def   setUp(self):

  #初始化测试平台

  desired_caps   = {}

  desired_caps['platformName'] =   'Android'

  desired_caps['platformVersion'] =   '4.4.2'

  desired_caps['deviceName'] =   '127.0.0.1:62001'

  #desired_caps['app'] =   'D:\apk\爱壁纸.apk'

  desired_caps['appPackage'] =   'com.lovebizhi.wallpaper'

  desired_caps['appActivity']   =   'com.lovebizhi.wallpaper.WelcomeActivity'

  self.driver   = webdriver.Remote('//127.0.0.1:4723/wd/hub',   desired_caps)

  def   tearDown(self):

  self.driver.quit()

  def   test_1(self):

  #测试导航页

  print("start   test1...")

  #判断是否安装爱壁纸APP

  wallpaper   =   self.driver.is_app_installed("com.lovebizhi.wallpaper")

  if   wallpaper:

  #self.driver.remove_app("com.lovebizhi.wallpaper")

  sleep(8)

  #   点击某一壁纸图片

  self.driver.find_elements_by_id("com.lovebizhi.wallpaper:id/image1")[4].click()

  sleep(4)

  #   点击设置壁纸

  self.driver.find_element_by_id("com.lovebizhi.wallpaper:id/btSetup").click()

  sleep(5)

  else:

  self.driver.install_app("D:\apk\爱壁纸.apk")

  sleep(30)

  def   test_2(self):

  #测试导航页

  print("start   test2")

  #判断是否安装爱壁纸APP

  wallpaper   =   self.driver.is_app_installed("com.lovebizhi.wallpaper")

  #是

  if   wallpaper:

  sleep(8)

  #   点击某一壁纸图片

  self.driver.find_elements_by_id("com.lovebizhi.wallpaper:id/image1")[5].click()

  sleep(4)

  #   点击设置壁纸

  self.driver.find_element_by_id("com.lovebizhi.wallpaper:id/btSetup").click()

  sleep(5)

  #否,安装

  else:

  self.driver.install_app("D:\apk\爱壁纸.apk")

  sleep(30)

  if   __name__ == '__main__':

  suite   =unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)

  unittest.TextTestRunner(verbosity=2).run(suite)

   

  开启Appium

     

  运行Python脚本即可看到APP自动操作实现设置壁纸的整个流程



                   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试工具频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程