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:\Users\Administrator\Desktop\study\xxxxxxxx.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\testresult\{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文档

posted @ 2020-04-01 21:55  吃个鱼丸  阅读(673)  评论(0编辑  收藏  举报