App⾃动化-appium⾃动化
⼤家好。我是⼩蔡:
    Web⾃动化讲完了。接下是移动端⾃动化。
    移动端有:ios和安卓两⼤主流操作系统。
    1.移动端⾃动化:(主流⼯具介绍)
    Robtium:
    是⼀款安卓的⼀款开源⾃动化测试框架,不⽀持跨平台,⽀持Java语⾔
    Macaca:由阿⾥爸爸开发⾃动化解决⽅案,使⽤平台:pc端。安卓。Ios,⽀持语⾔:java,python,nodejs
    Appium:是⼀个⾃动化测试开源⼯具,⽀持iOS和android平台上的移动原⽣应⽤、移动Web应⽤和混合应⽤。Appium是⼀个跨平台⼯具,它允许测试⼈员使⽤同样的接⼝、基于不同的平台写⾃动化测试代码,⼤⼤增加了测试套件间代码的复⽤性。
    Appium特点:开源
    移动原⽣应⽤:是指那些⽤iOS或者android sdk写的应⽤;
    移动web应⽤:是指那些使⽤移动浏览器访问的应⽤,appium⽀持iOS的safari和android上的chrome;
    混合应⽤:是指原⽣代码封装在⽹页视图(原⽣代码和web内容交互)。
    ⽀持跨平台,windos,linux,macos
    ⾃动化框架原理:
    Python-------->appium服务器----(adb)---⼿机:appiumbootstrap.jar
Appium-client
    通讯⽅式:发送http请求
    需要环境:安卓SDK ,JDK
    appium服务器安装:
      需要配置SDK路径和JDK路径
      Appiun-client-python安装
    Adb⼯具原理:adb客户端,adb的服务器,adb守护进程
    2.Adb常⽤命令:
      Adb debices 查看⼿机的设备id名称以及状态,pffline(关闭)/device(在线)
      Adb strat-server 启动
      Adb kill-server  关闭
     获取包名和界⾯名(为以后移动⾃动化获取界⾯定位元素打下基础)
        包名:app包名,通过app包名来区分不同的app,app包名是唯⼀
        界⾯名:相当于web页⾯当中的链接地址,app当中,每⼀个界⾯都有⼀个名字
      操作步骤:
      1.在⼿机或者模拟器开打app
      Adb shell dumpsys window windows | grep(linux)/findstr(win) mFocusedApp #获取当前打开的包名和界⾯名称。
      Adb shell dumpsys window|findstr/grep”usedApp”
      2.通过aapt dump badging+app安装包路径+⽂件名称
      PS:推荐代码启动app端的时候使⽤aapt获取包名和界⾯名      app安装:adb install app路径+app安装包名称
      app卸载:adb uninstall 包名
     上传:将电脑上的⽂件上传到⼿机
      Adb push 电脑上的⽂件路径远端⼿机的路径(根⽬录)     下载:从⼿机下载⽂件到本地
unicode在线工具      Adb pull ⼿机的⽂件路径电脑的⽂件夹路径
      查看⽇志信息:
        定位问题:
          Adb logcat 来查看相关的⽇志信息
         可以使⽤管道符将⽇志信息输出到⽂本⽂件中
          Adb logcat > ⽂件名.log
          App启动速度命令(性能测试)
          Aab shell am start -w 包名/界⾯名
      3..Appium基础:
        使⽤hello Appium
        能够使⽤appium启动任意应⽤程序
        能够了解“前置代码”各项参数含义
        前置代码(如下)#导包
        From  appium import webdriver
        Import  time
        Desired_caps=dict()
        #平台的版本⼤⼩写⽆所谓
        Desired_cpas[‘platformName’]=’Android’
        #平台版本号
Desired_cpas[‘platformVersion’]=5.1
        #设备名称IOS 不能乱写安卓可以乱写
        Desired_cpas[‘deviceName’]=’可以随便叫’
        #可以打开的应⽤程序(包名)
        Desired_cpas[‘’appPackege]=’com.adbroid.setting’
        #要打开的界⾯(界⾯名称)
        Desired_cpas【appActivity】)=’.Settings’
        #⼀个地址,⼀个字典
        参数含义:
          1python代码会访问本机appium 4723的⼀个端⼝
          2python会访问本机appium服务器,并获取driver对象          3appium会将driver对象转化为post七⽜
          4appium服务接收到会发情给⼿机
        appium的基础API:
         在脚本内启动其他app
         应⽤场景:
          #脚本内启动app
          #参数:
          appPac kag e:要打开的程序的包名
          appActivity:要打卡的程序的界⾯名
          Driver.start_activity(appPackage,appActiity)
         你需要使⽤adb命令去获取包名和界⾯名称
        获取app的包名和界⾯名称
          ⽅法:
          #获取包名
          Driver.current_package
          #获取界⾯名
          Driver.current_activity
         关闭app和驱动对象
          #关闭当前操作app,不会关闭驱动对象
          Driver.close_app()---会退出到桌⾯。
          #关闭驱动对象,同事关闭所有关联的app
          Driver.quit()-----会杀死driver驱动对象。
        安装和卸载以及是否安装app 
         ⽰例:判断某APP是否已经安装
         如果安装,就卸载,如果不安装,就安装。代码如下           if driver.is_app_installed(“包名”)
             ve_app(“包名”)
           Else:
             Driver.install_app(“包名”)
        将应⽤置于后台(模拟按HOME键)
          app放置到后台⼀定时间再回到前台,模拟热启动
        参数:
        Seconds:后台停留多少秒
        ⽅法
        Driver.background_app(5)
    新⼯具: 
      UIAutomatorViewer的使⽤
     定位元素的时候必须根据元素的相关特征来进⾏定位,⽽UIAutomatorViewer就是⽤来获取元素特征的,如:⽕狐浏览器的⼩⿏标   
1. 进⼊sdk⽬录下的⽬录
      mac在tools/bin⽬录下,打开UIAutomatorViewer
      windows在tools⽬录下,打开UIAutomatorViewer.bat
操作步骤:
1. 打开安卓模拟器
2. 启动待测app
3. 点击UIAutomatorViewer左上⾓Device Screenshot
4. 点击希望查看的控件
5. 查看右下⾓Node Detall相关信息
Ps:⾃动打开的命令窗⼝不要关
UIAutomatorViewer闪退
点击获取元素报错---
解决⽅案:adb kill-server
adb start-server
元素定位操作API
应⽤场景:
操作步骤:
1. 打开UIAutomatorViewer⼯具
2. 打开模拟器或真机
3. 通过UIAutomatorViewer⼯具获取想要操作元素Node Detail信息
4. 通过元素定位API进⾏定位
5. 对元素进⾏相关操作
Ps:元素的定位基于当前屏幕范围内的可见元素
定位⼀个元素【掌握】:
应⽤场景:进⾏输⼊。进⾏点击。获取内容
id操作⽅法:
#通过id定位⼀个元素
#参数id_value:元素resource-id属性值
#返回值:
定位到单个元素
Driver.find_element_by_id(id_value)
class操作⽅法:
#通过class定位⼀个元素
#参数id_class:元素class属性值
#返回值:
定位到单个元素
Driver.find_element_by_id(id_class)
xpath操作⽅法:
#通过xpath定位⼀个元素
#参数xpath_value:元素content-desc属性值
#返回值:
定位到单个元素
Driver.find_element_by_xpath(xpath_value)
代码⽰例:
Search_button=Driver.find_element_by_id(“元素id”)
Search_button.click()
Serach_button.send_keys(“输⼊值”)
Ps:尽量唯⼀素的元素
定位⼀组元素【掌握】:
应⽤场景:
和定位⼀个元素相同,但是想要批量的获取某个相同特征元素,使⽤⼀组元素的⽅式更加⽅便⽅法名:
id操作⽅法:
#通过id定位⼀组元素
#参数id_value:元素resource-id属性值
#返回值:
定位到元素列表
Driver.find_elements_by_id(id_value)
class操作⽅法:
#通过class定位⼀组元素
#参数id_class:元素class属性值
#返回值:
定位到元素列表
Driver.find_elements_by_id(id_class)
xpath操作⽅法:
#通过xpath定位⼀组元素
#参数xpath_value:元素content-desc属性值
#返回值:
定位到元素列表
Driver.find_elements_by_xpath(xpath_value)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。