Appium系列—手机事件处理

 #锁定屏幕参数为时间秒

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);

滑块的自动化

iOS

  • Java
// 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
(转载)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值