一.会话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文档