Appium的使用笔记(二)(基本操作)

主要内容是app的启动,关闭,安装卸载,置于后台,获取元素文本内容,获取元素位置和大小和属性值,滑动屏幕,拖拽,长按和抬起,分辨率和截图,获取和设置手机网络,通知栏操作

1.在脚本内启动其他app

1 #app_package是要打开的包名
2 #app_activity是要打开的进程名
3 driver.start_activity(app_package,app_activity)

附:在脚本内再次调起desires_cap中的app的话可以使用driver.launch_app()   (括号中不必再添加参数了)

2.用appium获取包名和进程名

1 #一般用于打开一个程序后,输出所显示的应用包名和进程名
2 print(driver.current_package)
3 print(driver.current_acivity)

3.如果需要关闭某个应用程序后,再打开新的程序,那么关闭的方法

1 #关闭当前操作的app,不会关闭驱动对象(驱动对象就是在前置代码后设置的driver之类的)
2 driver.close_app()
3 #关闭驱动对象,同时关闭所有关联的app
4 driver.quit()

4.用appium安装和卸载app

 1 """安装app"""
 2 #app_path是apk的路径
 3 driver.install_app(app_path)
 4 
 5 """卸载app"""
 6 #app_id是应用程序的包名
 7 driver.remove_app(app_id)
 8 
 9 """判断app是否安装"""
10 #返回值为布尔类型
11 driver.is_app_installed(app_id)

5.将应用置于后台(模拟home键+进入app)

有些app在进入后台一段时间后会需要重新登陆/输入验证码/输密码之类的,这个方法可以自动回到前台

1 #app放置到后台一定时间后再回到前台
2 #second是在后台停留的秒数
3 driver.background_app(second)

6.获取元素的文本内容

1 """用于获取按钮、文本框、输入框等控件的文本内容"""
2 #例如打开“设置”并且获取所有resource-id为“com.android.settings:id/title的元素,并打印其文字内容”
3 titles = driver.find_elements_by_id("com.android.settings:id/title")
4 for title in titles:
5     print(title.text)

7.获取元素的位置和大小

1 """用于获取元素的位置和大小"""
2 
3 #返回值:字典,(元素的x坐标,元素的y坐标)
4 element.location
5 
6 #返回值:字典,(width为宽度,hight为高度)
7 element.size

8.获取元素的属性值

 1 """根据特征定位到元素后,使用元素的属性名获得对应的属性值"""
 2 
 3 #例如获取所有“设置”里resource-id为com.android.settings:id/title的元素,并使用get_attribute获取这些元素的enable,text,content-desc,resource-id,class的属性值
 4 
 5 titles = driver.find_elements_by_id("com.android.settings:id/title")
 6 for title in titles:
 7     print(title.get_attribute("enabled"))
 8     print(title.get_attribute("text"))
 9     print(title.get_attribute("name"))
10     print(title.get_attribute("resourceId"))
11     print(title.get_attribute("ClassName"))
12 
13 #value = "name"返回的是content-desc/text属性值
14 #value = "ClassName"返回的是class属性值,API >=18才能支持(Android API level详情可百度,大于18就是指安卓版本要4.3以上)
15 #value = "resourceId"返回的是resourceid属性值,API >18=才能支持

9.Swipe滑动屏幕

1 """从一个坐标位置滑动到另一个坐标位置(两个点之间的)"""
2 
3 #duration是指滑动这个操作一共持续的时间长度,单位是ms
4 
5 driver.swipe(start_x,start_y,end_x,end_y,duration)

10.scroll滑动

1 """从一个元素滑动到另一个元素,直到页面自动停止(不能设置持续时间,滑动靠惯性)"""
2 
3 #例如从“存储”滑动到“更多”
4 
5 save_button = driver.find_element_by_xpath("//*[@text='存储']")
6 more_button = driver.find_element_by_xpath("//*[@text='更多']")
7 driver.scroll(save_button,more_button)

11.拖拽事件

1 """从一个元素滑动到另一个元素,第二个元素代替第一个元素原本屏幕上的位置"""
2 
3 #将“存储”拖拽到“更多”
4 
5 save_button = driver.find_element_by_xpath("//*[@text='存储']")
6 more_button = driver.find_element_by_xpath("//*[@text='更多']")
7 driver.drag_and_drop(save_button,more_button)

 

接下来是一些手势操作,需要导入touchaction模块,执行perform()函数

12.手指轻点

 1 #模拟手指对元素或坐标的轻敲操作
 2 #代码为TouchAction(driver).tap(element,x,y).perform()
 3 
 4 #例如打开设置,点击“WLAN”
 5 
 6 #先导入模块
 7 from appium.webdriver.common.touch_action import TouchAction
 8 
 9 ele = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
10 TouchAction(driver).tap(el).perform()

13.长按操作

 1 """有3种方法"""
 2 """第一种:按下,sleep等待,再release释放"""
 3 TouchAction(driver).press(x=123,y=123).perform()
 4 time.sleep(2)
 5 TouchAction(driver).press(x=123,y=123).release().perform()
 6 
 7 """第二种方法:按下,暂停等待2s也就是2000ms。再释放"""
 8 TouchAction(driver).press(x=123,y=123).perform()
 9 time.sleep(2)
10 TouchAction(driver).press(x=123,y=123).wait(2000).release().perform()
11 
12 """长按"""
13 TouchAction(driver).press(x=123,y=123).perform()
14 time.sleep(2)
15 TouchAction(driver).long_press(x=123,y=123,duration=2000).release().perform()

14.移动手指的操作(如下图的屏幕图形解锁)

 

 

 

1 #首先用UIautomatorviewer获得各点的坐标(最大化窗口,红色叉号旁边有点的坐标)
2 
3 TouchAction(driver).press(x=xxx,y=xxx).move_to(x=xxx,y=xxx).move_to(...)

15.分辨率和截图

1 #获取手机分辨率
2 driver.get_window_size()
3 
4 #截图当前页面,保存到指定路径,命名为指定格式,filename为完整路径,包括路径及文件名
5 driver.get_screenshot_as_file(filename)

16.获取和设置手机网络

1 #获取手机网络
2 driver.network_connection
3 
4 #设置手机网络
5 driver.set_network_connection(connectionType)

 

 

 比如要设置成飞行模式,那么connectionType = 1即可

17.发送关键代码

按键对应的编码可参考 https://www.cnblogs.com/sishuiliuyun/p/4432884.html

1 #代码形式为
2 driver.press_keycode(号码)

18.通知栏的额操作

1 """appium官方并未为我们提供关闭通知的api,所以现实中如何清除/关闭通知,就做如何操作即可"""
2 #打开手机通知栏
3 driver.open_notifications()

 19.发送一个按键事件,有两种方式

1 driver.press_keycode(3)
2 
3 driver.keyevent(3)

20.锁住屏幕和模拟摇晃设备

 1 driver.lock(5)
 2 
 3 driver.shake()

21.缩小屏幕和放大屏幕(双指往内移动缩小,双指往外移动放大)

1 #缩小屏幕
2 driver.pinch(element=el)
3 
4 #放大屏幕
5 driver.zoom(element=el)

22.在设备上推入和拉出文件

1 #向设备推入文件
2 driver.pull_file("文件位置")
3 
4 #把文件从设备中拉出来
5 driver.push_file("文件位置")

 

 

 

--end--

posted @ 2020-01-17 17:36  -Ruirui-  阅读(621)  评论(0编辑  收藏  举报