zoukankan      html  css  js  c++  java
  • Appium常用API

    一.会话API

    启动会话

     desired_caps = {
            'platformName': 'Android',
            'platformVersion': '7.0',
            'driverName': 'V889F',
            'appPackage': 'com.alibaba.mts.mtsdemoapp',
            'appWaitPackage': 'com.alibaba.mts.mtsdemoapp',
            'app': 'D:/home/mdp/result/GroovyTest/case1/task.apk',
            'newCommandTimeout': 30,
            'automationName': 'Appium'
        }
    self.driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub/',desired_caps)
    

     关闭会话

    self.driver.quit()
    

    二、状态信息API

     

    1、current_activity:获取当前正在运行的activity名称

      

    activity=driver.current_activity
    print(avtivity)
    

    2、page_source:得到当前页面的结构图

    source=driver.page_source
    print(source)
    

    3、Capabities:得到桑倩的deviceName等配置信息,还可以通过此方法得到其余的配置,如platformVersion、APPpackage等等

    caps=driver.capabilities
    device=caps.get("deviceName")
    

    4.其他信息获取类API,如时间

    driver=device_time
    

    5、get_window_size():获取手机屏幕宽、高

    driver.get_window_size()

    6、network_connection:返回网络的连接类型

    #''返回一个指定网络连接类型的整数位掩码(android)'''
    
    driver.network_connection 

    7、set_network_connection(connectionType):设置网络的连接(android)

      '''    Possible values:
                Value (Alias)      | Data | Wifi | Airplane Mode
                -------------------------------------------------
                0 (None)           | 0    | 0    | 0
                1 (Airplane Mode)  | 0    | 0    | 1
                2 (Wifi only)      | 0    | 1    | 0
                4 (Data only)      | 1    | 0    | 0
                6 (All network on) | 1    | 1    | 0               '''

       driver.set_network_connection(2)

    8、available_ime_engines:返回android设备可用的输入法

    driver.available_ime_engines

    9、is_ime_active():检查设备是否有输入法服务活动,返回真/假。

    driver.is_ime_active()

    三、安装卸载启动API

    1.reset():重置应用的数据,有些场景我们需要清除应用的数据,相当于第一次安装时候的状态;比如:第一次启动app的引导页、登录等等

    driver.reset()
    

    2、Start_activity :开启某个activity实现跳转

    driver.start_activity("com.taobao.taobao","com.taobao.taobao.avtivity.MainActivity")
    

    3、Is_app _installed():检测某个app是否安装返回的是布尔值,在android在传参为包名,在ios中传参为BundleID

    driver.is_app_installed("com.taobao.taobao")
    

    4、install_app():安装app

    driver.install_app("C:UsersAdministratorDesktopstudyxxxxxxxx.apk")
    

    5、close_app():关闭应用,一般我们测试结束后,比如tearDown方法中取调用执行

    driver.close_app()
    

    四、元素操作API

    1.get_attribute:获取控件的给定属性或属性

     driver.find_element_by_id("com.android.mms:id/action_compose_new").get_attribute("enabled")  

      注意点:1、checkable、checked、clickable、enabled、focusable、focused、scollable、long-clickable、password、selected,返回的是布尔值,True或False

          2、.get_attribute("name")  返回的是‘content_desc’的值

          3、.get_attribute("className")  返回的是‘class’的值

    2、clear:如果是文本输入元素,就清除文本,对其他元素没有影响

      element.clear() 
    

    3、swipe:通过传递坐标信息即可完成从A点滑动至B点,滑动时间为毫秒

      driver.swipe(410,1012,410,328,500) 
    

    4、pinch:在元素上执行模拟双指捏(缩小操作),默认时间为200毫秒也可指定时间

    driver.pinch(element,300)

    5、zoom:同pinch相反,是在元素上执行放大操作,默认时间为200毫秒也可指定时间

    driver.zoom(element)
    

    6、tap:模拟手指点击

      '''说明:模拟手指点击(最多五个手指),可设置按住时间长度(毫秒),用法:driver.tap([(x,y),(x1,y1)],500)''',和click比较对于只有一个手指的操作和click相同,如果超过一个手指就不同

    driver.tap([(218,687),]) #一个手指点击
    driver.tap([(100,20),(100,40),(100,60),(100,80),(100,100),500)#5个手指点击

    7、tag_name:获取控件的class

    driver.find_element_by_accessibility_id(u"菜单").tag_name
    

    8、text:获取控件的text

    driver.find_element_by_id(u"com.android.mms:id/action_compose_new").text

    9、is_displayed:判断该控件是否对用户可见

    driver.find_element_by_id("com.android.mms:id/action_compose_new").is_displayed()    #返回True或False
    

    10、size:获取控件的大小,一般在九宫格等里面会使用到。

    ele_size=driver.find_element_by_id("com.android.mms:id/action_compose_new").size
    print(ele_size)

    11、location:获取控件的位置

    driver.find_element_by_id("com.android.mms:id/action_compose_new").location

    12、scroll:从元素origin_el滚动至元素destination_el

      '''说明:scroll为横滚动,并且元素不能再同一页面上'''

    driver.scroll(self.driver.find_element_by_name(u"分类文件"), self.driver.find_element_by_name(u"本地"))

    13、drag_and_drop:将元素origin_el拖到目标元素destination_el

    driver.drag_and_drop(self.driver.find_element_by_name(u"主题"), self.driver.find_element_by_name(u"QQ音乐"))
    

    14、flick:按住A点后快速滑动至B点

    driver.flick(502,955,486,407)

    15、press_keycode:发送按键码(android仅有),具体按键码见:https://www.cnblogs.com/123blog/articles/12614628.html

    driver.press_keycode(3)  

    16、long_press_keycode:发送一个长按的按键码(长按某键)

    driver.long_press_keycode(3) 
    

    17、current_context:返回当前会话的当前上下文

    driver.current_context

    18、context:返回当前会话的当前上下文

    driver.context
    

    五、其他常见API

    1.get_screenshot_as_file():如果测试用例执行失败我们可能需要保存截图到测试报告中,通过此方法可以获取到运行失败的错误截图。一般可以封装在basepage中调用。

    driver.get_screenshot_as_file("D:\autotest	estresult{0}_{1}.img".format(case_module,time.str_time(time_format)))
    

      

    2.background_app:将应用切换到后台,然后可以让其在指定时间内回到前台,或者让它一直在后台。

    driver.background_app(5)#置于后台,持续5秒
    driver.background_app(-1)#持续置于后台运行
    

      更多的appiumAPI见appium文档

  • 相关阅读:
    Spring HTTP Service
    Nexus搭建Maven私服
    虚拟机Class文件结构笔记
    JVM内存区域与内存溢出异常
    深入学习虚拟机类加载过程
    虚拟机常用的内存查看与分析工具
    对Java内存模型即JMM的理解
    通过Redux源码学习基础概念一:简单例子入门
    跟着官网的例子学Reacjs (一)FilterableProductTable
    es6继承 vs js原生继承(es5)
  • 原文地址:https://www.cnblogs.com/123blog/p/12609528.html
Copyright © 2011-2022 走看看