zoukankan      html  css  js  c++  java
  • Appium入门案例之Android篇

    Appium入门案例之Android篇

    Appium环境搭建篇参考这个“环境搭建

    (一)、获取package和activity

    安卓自动化测试之前首先需要了解package和activity,由于测试前需要这两个参数的值来启动,一般称前置代码;

    获取手机当前运行的package和activity的命令是:

    adb shell dumpsys window w |grep / |grep name=     #mac
    
    adb shell dumpsys window w |findstr / |findstr name=   #windows

     红框的内容就是需要用到的package和activity

     也可以通过adb命令来得到,比如

    1.adb shell pm list packages (获取所有包名)

    2.adb logcat>D:/log.log (抓取手机log到指定路径)

    用notepad打开并搜索:cmp=c

    可以找到对应的package和activity

    (二)、连接Appium,启动会话

    运行appium,启动服务之后,点击右上角第一个按钮进行配置

    如下图所示:

      "platformName": "Android", #名称
      "platformVersion": "10",        #版本
      "deviceName": "sanxing",      #设备名
      "appPackage": "com.android.calculator2",  #package名
      "appActivity": "com.android.calculator2.Calculator" #activity名

     

     填好之后启动会话即可。

     出现如下画面即代表已经连接上,在这个界面可以进行元素的定位以及对手机发送一些消息,类似于uiautomatorviewer工具

    (三)、Appium常用的api

    driver.start  #启动app
    driver.close_app #关闭app
    
    driver.install_app(path)#安装app
    
    driver.remove_app(package名称)#卸载app
    
    is_app_installed(package名称)
    返回布尔型 用于判断是否安装
    
    background_app(时间) #置于后台 时间到了会自动回来
    
    driver.location# 获取元素位置信息
    driver.size #获取元素大小
    driver.text#获取元素文本
    
    driver.get_attribute()value #获取元素属性值
    [
    resources-id 写成resourceId
    class写成className
    name可以获取text和content-desc两个属性的中的文本值
    ]
    
    swipe、scroll、drag_and_drop(都是滑动)
    
    driver.swipe(start_x,start_y,end_x,end_y,duration=None)   (有惯性)
    
    driver.scroll(开始的元素、结束的元素) #从一个元素滑动到另外一个元素后停留的地方(有惯性)
    
    driver.drag_and_drop(开始的元素,结束的元素)#从一个元素滑动到另外一个元素,第二个元素替代第一个元素的位置(没有惯性)
    
    TouchAction 高级手势,实现滑动长按拖动,首先要创建touchaction对象,最后都要用perform()执行
    #执行轻按
    t1=TouchAction(driver)
    t1.tap(定位).perform()
    #坐标形式
    t1.tap(x=100,y=100).perform()
    #双击
    t1.tap(定位,count=2).perform()
    
    #按下
    t1.press(定位or坐标).perform()
    t1.press.(定位or坐标).release().perform()  #抬起
    
    #长按
    t1.press(定位or坐标).perform()
    t1.press.(定位or坐标).wait(2000)release().perform()  #单位毫秒,等待时间
    
    t1.press(定位or坐标).long_press(定位or坐标,duration=1000).perform() #单位毫秒,等待时间
    
    #移动
    t1.move_to(定位or坐标).perform()
    
    #获取手机分辨率
    driver.get_window_size()
    #截图
    driver.get_screenshot_as_file(“路径”)
    #获取手机网络
    driver.network_connection
    driver.set_network_connection(1)飞行模式
    1.飞行模式  2仅Wi-Fi  4仅数据  6全部
    
    #发送手机按键到设备(三大按键、音量、电源)
    driver.press_keycode()
    具体值参考https://blog.csdn.net/shililang/article/details/14449527
    
    #下拉通知中心
    driver.open_notifications()

    (四)实例操作

    下面贴一段代码来实际操作计算器以及跳转到浏览器中输入内容

    from appium import webdriver
    import unittest,time
    desired_caps=dict()
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '10'
    desired_caps['deviceName'] = 'huawei'
    desired_caps['appPackage'] = 'com.android.settings'
    desired_caps['appActivity'] ='com.android.settings.HWSettings'
    driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
    time.sleep(3)
    print(driver.current_package)
    print(driver.current_activity)
    driver.start_activity('com.android.calculator2','com.android.calculator2.Calculator')
    time.sleep(5)
    print(driver.current_package)
    print(driver.current_activity)
    driver.find_element_by_id('com.android.calculator2:id/digit_4').click()
    time.sleep(1)
    driver.find_element_by_id('com.android.calculator2:id/digit_6').click()
    time.sleep(1)
    driver.find_element_by_id('com.android.calculator2:id/op_add').click()
    time.sleep(1)
    driver.find_element_by_id('com.android.calculator2:id/digit_9').click()
    time.sleep(1)
    driver.find_element_by_id('com.android.calculator2:id/eq').click()
    time.sleep(1)
    driver.find_element_by_id('com.android.calculator2:id/formula').clear()
    time.sleep(1)
    driver.start_activity('com.android.browser','com.uc.browser.InnerUCMobile')
    time.sleep(3)
    driver.find_element_by_xpath('//android.view.View[@content-desc="搜索或输入网址"]/com.uc.framework.ui.customview.b.a[2]').click()
    time.sleep(1)
    driver.find_element_by_class_name('android.widget.EditText').send_keys("test")
    time.sleep(1)
    driver.quit()

    到此appium关于安卓的操作已经差不多了

  • 相关阅读:
    MybatisPlus分页插件、常用查询
    object与map与json之间的相互转换
    MybatisPlus逻辑删除、执行性能
    MybatisPlus实现自动填充(表字段创建、修改时间自动填写)、version乐观锁
    Swagger2的使用
    uniapp小程序增加自定义字体
    新发安卓应用APP 怎么快速上应用市场 简单谈谈
    Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略及提示信息
    ios真机调试,iTunes检测得到,hbuilder未检测到手机和模拟器的解决办法
    nohup命令
  • 原文地址:https://www.cnblogs.com/big-white/p/14398006.html
Copyright © 2011-2022 走看看