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文档

  • 相关阅读:
    49. 字母异位词分组
    73. 矩阵置零
    Razor语法问题(foreach里面嵌套if)
    多线程问题
    Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data
    How to execute tons of tasks parallelly with TPL method?
    How to sort the dictionary by the value field
    How to customize the console applicaton
    What is the difference for delete/truncate/drop
    How to call C/C++ sytle function from C# solution?
  • 原文地址:https://www.cnblogs.com/123blog/p/12609528.html
Copyright © 2011-2022 走看看