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
(转载)
相关文章推荐
- wxWidgets事件处理(手机播放器连载系列2)
- wxWidgets事件处理(手机播放器连载系列2)
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- J2ME手机中断事件处理
- 一步一步学Silverlight 2系列(4):鼠标事件处理
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触 (转载)
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- 一步一步学Silverlight 2系列(6):键盘事件处理
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- Microsoft .Net Remoting系列教程之三:Remoting事件处理全接触
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
- 探索VB系列中的事件处理的奥秘
- .net控件开发系列 事件处理机制 三个接口两个方法