您的位置:首页 > 移动开发

Appium系列—手机事件处理

2016-12-07 17:58 344 查看
#锁定屏幕参数为时间秒
driver.lock(5)
#将APP放置后台 参数时间秒
driver.background_app(5)
#收起键盘
driver.hide_keyboard()
#启动Activity 参数 一个是包名,一个是activity名字
driver.start_activity('com.example.android.apis', '.Foo')
#打开通知栏(打开下拉通知栏)
driver.open_notifications()
#检查应用是否已经安装 参数包名
driver.is_app_installed('com.example.android.apis')
#安装应用 参数 路径
driver.install_app('path/to/my.apk')
#删除应用
driver.remove_app('com.example.android.apis')
#摇晃(Shake) 模拟设备摇晃
driver.shake()
#关闭应用
driver.close_app()
#重置(相当于卸载后重装)
driver.reset()
#获取应用的字符串
driver.app_strings
#按键事件(Key Event)参数176 代表了一个按键
driver.keyevent(176)
#获取当前Activity
driver.current_activity
#触摸动作(TouchAction) / 多点触摸动作(MultiTouchAction)
action = TouchAction(driver)
action.press(element=el, x=10, y=10).release().perform()
#滑动(Swipe) 参数 开始x,y坐标 滑动到的X,y坐标, 持续时间ms
driver.swipe(start=75, starty=500, endx=75, endy=0, duration=800)
#捏 双指向内移动缩小屏幕
driver.pinch(element=el)
#放大屏幕 (双指往外移动来放大屏幕)
driver.zoom(element=el)

触摸操作/多点触控 API的概述

触摸操作 (TouchAction)

TouchAction 对象包含一连串的事件。在所有的appium客户端库中,触摸对象创建并给出一连串的事件。规范中的可用事件有:
短按 (press)
释放 (release)
移动到 (moveTo)
点击 (tap)
等待 (wait)
长按 (longPress)
取消 (cancel)
执行 (perform)
这里有一个通过伪代码创建动作的例子:
TouchAction().press(el0).moveTo(el1).release()
上述模拟用户按下一个元素,滑动他的手指到另一个位置,然后从屏幕上释放其手指。Appium按顺序执行这些事件。你可以添加一个 
wait
 事件来控制相应手势的时间。appium客户端库有不同的方式来实现上述例子,比如:你可以传递一个坐标值或一个元素给 
moveTo
 事件。同时传递坐标和元素,会将坐标和元素对应起来,但这不是绝对的。调用 
perform
 事件发送整个事件序列给appium,从而使触摸手势在设备上运行。Appium客户端还允许人们直接通过驱动程序对象执行触摸操作, 而不是调用触摸操作对象的
perform
事件。在伪代码中,以下两个是等价的:
TouchAction().tap(el).perform()

driver.perform(TouchAction().tap(el))

多点触控 (MultiTouch)

MultiTouch 对象是触摸操作的集合。多点触控手势只有两个方法,添加 (
add
) 和执行 (
perform
) 。
add
 用于将不同的触摸操作添加到一个多点触控中。当 
perform
 被调用的时候,所有被添加到多点触摸中的触摸事件会被发送到appium并且被执行,就像它们同时发生一样。Appium会执行“触摸事件”中的第一个事件,然后第二个,以此类推。用两只手指点击的代码示例:
action0 = TouchAction().tap(el)
action1 = TouchAction().tap(el)
MultiAction().add(action0).add(action1).perform()

缺陷和解决方法

不幸的是有一个缺陷存在于iOS的7.x的模拟器上,ScrollViews无法识别由UIAutomation创建的手势 (在iOS上Appium使用的是UIAutomation) 。 为了实现此功能,我们已经提供了新的函数, 
scroll
, 在大部分情况下可以让你实现跟ScrollView一样的功能!滚动要使用这特殊的功能,我们重写了driver中的 
execute
 和 
executeScript
 方法。 可以通过在命令前加 
mobile:
 的前缀来使用滚动。 请参见下面的例子:WD.js:
// javascript
// 把视图往下滑动
driver.execute("mobile: scroll", [{direction: 'down'}])
// 继续测试
Java:
// java
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", "down");
scrollObject.put("element", ((RemoteWebElement) element).getId());
js.executeScript("mobile: scroll", scrollObject);
滑块的自动化iOSJava
// java
// 滑动值使用0到1之间的数字以字符串的形式表示
// 例如,“0.1”代表10%,“1.0”代表100%
WebElement slider =  driver.findElement(By.xpath("//window[1]/slider[1]"));
slider.sendKeys("0.1");
Android与Android上的滑块进行交互的最佳方式是用触摸操作 (TouchActions) 。
附:键盘对应表
A < ——–> 65
B < ——–> 66
C < ——–> 67
D < ——–> 68
E < ——–> 69
F < ——–> 70
G < ——–> 71
H < ——–> 72
I < ——–> 73
J < ——–> 74
K < ——–> 75
L < ——–> 76
M < ——–> 77
N < ——–> 78
O < ——–> 79
P < ——–> 80
Q < ——–> 81
R < ——–> 82
S < ——–> 83
T < ——–> 84
U < ——–> 85
V < ——–> 86
W < ——–> 87
X < ——–> 88
Y < ——–> 89
Z < ——–> 90
0 < ——–> 48
1 < ——–> 49
2 < ——–> 50
3 < ——–> 51
4 < ——–> 52
5 < ——–> 53
6 < ——–> 54
7 < ——–> 55
8 < ——–> 56
9 < ——–> 57
数字键盘 1 < ——–> 96
数字键盘 2 < ——–> 97
数字键盘 3 < ——–> 98
数字键盘 4 < ——–> 99
数字键盘 5 < ——–> 100
数字键盘 6 < ——–> 101
数字键盘 7 < ——–> 102
数字键盘 8 < ——–> 103
数字键盘 9 < ——–> 104
数字键盘 0 < ——–> 105
乘号 < ——–> 106
加号 < ——–> 107
Enter < ——–> 10
减号 < ——–> 109
小数点 < ——–> 110
除号 < ——–> 111
F1 < ——–> 112
F2 < ——–> 113
F3 < ——–> 114
F4 < ——–> 115
F5 < ——–> 116
F6 < ——–> 117
F7 < ——–> 118
F8 < ——–> 119
F9 < ——–> 120
F10 < ——–> 121
F11 < ——–> 122
F12 < ——–> 123
F13 < ——–> 124
F14 < ——–> 125
F15 < ——–> 126
Backspace < ——–> 8
Tab < ——–> 9
Clear < ——–> 12
Shift < ——–> 16
Control < ——–> 17
Alt < ——–> 18
Caps Lock < ——–> 20
Esc < ——–> 27
空格键 < ——–> 32
Page Up < ——–> 33
Page Down < ——–> 34
End < ——–> 35
Home < ——–> 36
左箭头 < ——–> 37
向上箭头 < ——–> 38
右箭头 < ——–> 39
向下箭头 < ——–> 40
Insert < ——–> 45
Delete < ——–> 46
Help < ——–> 47
Num Lock < ——–> 144
; : < ——–> 186
= + < ——–> 187
- _ < ——–> 189
/ ? < ——–> 191
` ~ < ——–> 192
[ { < ——–> 219
| < ——–> 220
] } < ——–> 221
‘’ ‘ < ——–> 222
#coding=utf_8
(转载)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Appium 自动化 事件