一、Monkey脚本API方法 LaunchActivity(pkg_name, cl_name):启动应用,参数:包名和Activity Tap(x, y, tapDuration):模拟一次手指单击事件...,参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略 DispatchPress(keyName):按键。...DispatchTrackball:模拟发送轨迹球事件 ProfileWait(5000):等待5秒 StartCaptureFramerate():获取帧率 EndCaptureFramerate(input...#获取App的包名,先启动qq并获取焦点 adb shell dumpsys window | findstr mCurrentFocus 3、脚本开发 Monkey脚本只能通过坐标的方式来定位点击和移动事件的屏幕位置...(2000) Tap(545,570,1000) #点击密码输入框 DispatchString(zxw1234) UserWait(2000) Tap(550,811,1000) #点击登录按钮
移动开发与PC开发大相径庭,PC上最多的是鼠标点击事件,但是手机上面的手势事件却又很多,最常见的开发问题是处理父控件与子控件事件冲突问题,这就要我们十分了解手势了。...ionic使用的是angular的库,用hammer来解决移动端的屏幕手势。...block (click)="childClick($event)">子控件点击 这是我们常见的写法,两个同时用click或者tap来完成点击事件的处理,在实际操作中造成事件冒泡...$event)">子控件点击 由于错误写法1我们了解到,tap事件是触摸事件,并不是点击事件,在触发的时候会隔离事件冒泡,虽然不能一起使用,但是可以在click...事件上阻止click触发,所以我们在子控件上使用tap,父控件上使用click,这样可以让我们的时间冒泡问题得以解决。
换句话说其他手势是连续型手势,而连续型手势的特点就是:会多次调用手势操作事件,而且在连续手势识别后可以取消手势。 从下图可以看出两者调用操作事件的次数是不同的: ?...为触发事件需要点击的次数,默认是1; numberOfTouchesRequired为触发事件需要的几个手指点按,默认是1; 若都设置为2,就需要两个手指同时点按2次才会触发事件。...View的偏移量; setTranslation:方法设置手势的偏移量; velocityInView:方法获取速度; 所以手势的创建方法都类似,这里就不在一一列举了。...UIScreenEdgePanGestureRecognizer (边缘拖动) ScreenEdgePan继承于UIPanGestureRecognizer,在屏幕边缘滑动才会触发 @property...storyboard中的手势控件 使用方法: 直接将手势控件拖到要添加的视图上 ? 关联手势事件 ? 设置手势属性 ?
注意:手势识别和触摸事件是同时存在的,只是因为touchesCancelled导致触摸事件失效、 @property(nonatomic) BOOL cancelsTouchesInView; 5、是否延迟发送触摸事件给触摸到的控件...如果设置为YES,手势识别器在识别的过程中(注意是识别过程),不会将触摸发给触摸到的控件,即控件不会有任何触摸事件。...只有在识别失败之后才会将触摸事件发给触摸到的控件,这种情况下控件view的响应会延迟约0.15ms。...@property(nonatomic) BOOL delaysTouchesBegan; 6、如果触摸识别失败是否立即结束本次手势识别的触摸事件(让触摸控件去识别触摸事件) 默认为YES,这种情况下发生一个触摸时...= 3; // 设置能识别到手势的最少的手指的个数 tap.numberOfTouchesRequired = 2; //把手势对象添加到对应的控件中 [self.imgView addGestureRecognizer
为触发事件需要点击的次数,默认是1; numberOfTouchesRequired为触发事件需要的几个手指点按,默认是1; 若都设置为2,就需要两个手指同时点按2次才会触发事件。...View的偏移量; setTranslation:方法设置手势的偏移量; velocityInView:方法获取速度; 所以手势的创建方法都类似,这里就不在一一列举了。...UIScreenEdgePanGestureRecognizer (边缘拖动) ScreenEdgePan继承于UIPanGestureRecognizer,在屏幕边缘滑动才会触发 @property...想进一步了解可以看这篇《iOS CGAffineTransform详解》 对iOS控件进行变形实际就是对控件transform属性进行操作。...使用方法: 直接将手势控件拖到要添加的视图上 关联手势事件 设置手势属性 注意:若想同时识别多个手势,方法和上面相同,遵循协议,实现方法,设置代理,不过代理可以手动关联。
获取元素坐标点位置 Monkey脚本只能通过坐标的方式来定位点击和移动事件的屏幕位置,这里就需要提前获取坐标信息。...获取坐标信息的方法很多,最简单的方法就是打开手机中的开发人员选项,打开“显示指针位置”。随后,在屏幕上的每次操作,在导航栏上都会显示坐标信息。...Tap(x, y, tapDuration):模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。...RotateScreen(rotationDegree, persist):旋转屏幕。...DispatchTrackball:模拟发送轨迹球事件。 ProfileWait:等待5秒。 StartCaptureFramerate():获取帧率。
工作中我们经常需要对应用的页面进行手势操作,比如滑动、长按、拖动等,AppiumDriver 为我们提供一个模拟手势操作的辅助类 TouchAction,可以通过它对手机屏幕进行手势操作。...释放操作,可以结合其它的事件使用。..., int x, int y) tap 在某个控件的中心点上点击一下,用法如下: tap(WebElement el) 以(x,y)坐标点为目标点击,用法如下: tap(int x, int y...在该点上点击,用法如下: tap(WebElement el, int x, int y) longpress 长按某一控件,用法如下: long_press(WebElement el) 以(...用法如下: wait(long timeout) cancel 可以取消执行事件链中的事件,用法如下: cancel() perform 执行事件链中的事件,一般最后会调用这个方法,顺序执行事件链中的动作
本文节选自霍格沃兹测试学院内部教材 工作中我们经常需要对应用的页面进行手势操作,比如滑动、长按、拖动等,AppiumDriver 为我们提供一个模拟手势操作的辅助类 TouchAction,可以通过它对手机屏幕进行手势操作..., int x, int y) tap ** ** 在某个控件的中心点上点击一下,用法如下: tap(WebElement el) 以(x,y)坐标点为目标点击,用法如下: tap(int x, int...在该点上点击,用法如下: tap(WebElement el, int x, int y) longpress ** ** 长按某一控件,用法如下: long_press(WebElement el)...用法如下: wait(long timeout) cancel ** ** 可以取消执行事件链中的事件,用法如下: cancel() perform ** ** 执行事件链中的事件,一般最后会调用这个方法...,顺序执行事件链中的动作。
工作中我们经常需要对应用的页面进行手势操作,比如滑动、长按、拖动等,AppiumDriver 为我们提供一个模拟手势操作的辅助类 TouchAction,可以通过它对手机屏幕进行手势操作。...释放操作,可以结合其它的事件使用。...在某个控件的中心点上点击一下,用法如下: tap(WebElement el) 以(x,y)坐标点为目标点击,用法如下: tap(int x, int y) 以控件 el 的左上角为基准,沿着 x 轴向右移动...在该点上点击,用法如下: tap(WebElement el, int x, int y) longpress 长按某一控件,用法如下: long_press(WebElement el) 以(x,y)...用法如下: wait(long timeout) cancel 可以取消执行事件链中的事件,用法如下: cancel() perform 执行事件链中的事件,一般最后会调用这个方法,顺序执行事件链中的动作
lrcImageView.image = lrcImage; _lrcImageView.backgroundColor = [UIColor blackColor]; //获取添加了歌词数据的海报图片...这个方法来捕获远程控制事件,并根据event.subtype来判别指令意图并作出反应。...官方文档:https://developer.apple.com/documentation/mediaplayer/mpremotecommandcenter //锁屏界面开启和监控远程控制事件 -...MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];...MPRemoteCommandCenter对象提供feedback对象用于对媒体文件进行喜欢, 不喜欢, 标记的操作.
发展到现在,无论是Android还是iPhone,现在APP与用户进行交互,基本上都是依赖于各种各样的触控事件。例如用户对屏幕进行了侧滑,APP就需要对这个手势进行相应的处理,给用户一个反馈。...四类事件的主要方法 有的童鞋可能分不清楚手势当中结束和取消的区别。举个栗子,当正在抚摸自己的爱机屏幕的时候,突然来了一个电话,这个“爱抚”的动作就被临时中断了,这个时候就叫做“取消”,而不是结束。...用户点击屏幕之后,系统到底让谁来响应这个触摸事件吶?例如用户点了一个button,是应该让谁来处理呢?...最终找到这个干活的控件,我们学术上就叫做第一响应者对象。找到了负责处理的按钮之后如何给出相应处理呢?大概过程就是这样: button尝试处理事件。如果它不能处理事件,则将事件传递给其父视图。...一次完整的触摸事件的传递响应的过程大概是这样的: UIAppliction --> UIWindow -->递归找到最适合处理事件的控件-->控件调用touches方法-->判断是否实现touches方法
具体方法:设置--开发者选项--指针位置 开启指针位置之后,点击手机屏幕就会显示该位置的具体坐标,这样就获取到了元素的绝对坐标 然后通过webdriver的tap()函数点击该坐标就可以了。...我们获取到的是绝对坐标,如果换一个屏幕分辨率不同的手机那这个坐标自然会发生变化,要实现不同手机均能实现点击同一控件自然要用到相对坐标了,具体方法如下: 1.获取当前空间的绝对坐标(x1,y1),开启指针位置后...,通过点击控件位置获取坐标; 2.获取当前手机的屏幕大小(x2,y2),通过driver.get_window_size()['width'],dirver.get_window_size()['height...']分辨获取当前手机的x、y坐标; 3.获取测试手机的屏幕大小(x3,y3),获取方式同上一步; 4.获取指定控件在测试手机中的坐标:((x1/x2)*x3,(y1/y2)*y3) 5.获取到坐标之后同样使用...tap()函数点击该控件。
1 << 0, // on all touch downs UIControlEventTouchDownRepeat = 1 << 1, // on multiple touchdowns (tap...:用户点触屏幕,或者又有新手指落下的时候。...UIControlEventTouchUpInside: 所有在控件之内触摸抬起事件。...UIControlEventTouchUpOutside: 所有在控件之外触摸抬起事件 UIControlEventTouchCancel: 所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,...UISegmentedControl的常见属性 属性名称 作用 BOOL momentary 点击之后是否恢复原样 numberOfSegments(只读) 总选项数 selectedSegmentIndex 用来设置或者获取选中项
= 1 << 0, // on all touch downs UIControlEventTouchDownRepeat = 1 tap...:用户点触屏幕,或者又有新手指落下的时候。...UIControlEventTouchUpInside:所有在控件之内触摸抬起事件。...UIControlEventTouchUpOutside:所有在控件之外触摸抬起事件 UIControlEventTouchCancel:所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断...UISegmentedControl的常见属性 属性名称 作用 BOOL momentary 点击之后是否恢复原样 numberOfSegments(只读) 总选项数 selectedSegmentIndex 用来设置或者获取选中项
element.exists) // 等待出现,n秒后放弃(同app.wait) let result = element.waitForExistence(timeout: 3) // 是否可以为元素计算生命点以合成事件...合成事件并将其发送到XCUIElement。 使用一个断言将XCUIElement的状态与预期的参考状态进行比较。...() // 点击cell // 获取订阅按钮(因为这个按钮的title会变,所以用title获取会出错) // 因此需要为按钮设置accessibilityIdentifier...button.isSelected) // 断言按钮已选择状态 } accessibilityIdentifier管理 整个APP中的每个控件都需要一个唯一的accessibilityIdentifier...我们目前采取的方案是用控件所在类的类名+控件变量名作为accessibilityIdentifier。
lrcImageView.image = lrcImage; _lrcImageView.backgroundColor = [UIColor blackColor]; //获取添加了歌词数据的海报图片...具体用法如下: //在具体的控制器或其它类中捕获处理远程控制事件,当远程控制事件发生时触发该方法, 该方法属于UIResponder类,iOS 7.1 之前经常用 - (void)remoteControlReceivedWithEvent...官方文档:https://developer.apple.com/documentation/mediaplayer/mpremotecommandcenter //锁屏界面开启和监控远程控制事件 -...MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];...MPRemoteCommandCenter对象提供feedback对象用于对媒体文件进行喜欢, 不喜欢, 标记的操作.
当用户手指放在移动设备在屏幕上滑动会触发的touch事件: 以下支持webkit: touchstart——当手指触碰屏幕时候发生。不管当前有多少只手指。...touchend——当手指离开屏幕时触发。 touchcancel——系统停止跟踪触摸时候会触发。例如在触摸过程中突然页面alert()一个提示框,此时会触发该事件,这个事件比较少用。...解决方案: fastclick可以解决在手机上点击事件的300ms延迟。 zepto的touch模块,tap事件也是为了解决在click的延迟问题。...,可以获取手机运动状态下的运动加速度等数据。...input控件默认外观丑陋。
在网上看了些,一起整理了下,还是有些不够全,但都比较常用了,先放出来吧: #锁定屏幕时间秒 driver.lock(5) #将APP放置后台 参数时间秒 driver.background_app(5)...driver.remove_app('xxxxxx') #摇晃(Shake) driver.shake() #关闭应用 driver.close_app() #重置(等于卸载后重装) driver.reset() #获取应用的字符串...driver.app_strings #按键事件 driver.keyevent(具体的按键) #获取当前Activity driver.current_activity #触摸动作(TouchAction...,y坐标 滑动到的X,y坐标, 持续时间ms driver.swipe(start=75, starty=500, endx=75, endy=0, duration=800) #双指向内移动缩小屏幕...driver.pinch(element=el) 放大 driver.zoom(ele) 坐标点击 driver.tap([(x,y)],time) 滚动 driver.scroll(ele1,ele2
this.beginBtn.addEventListener(egret.TouchEvent.TOUCH_TAP,this.tapHandler,this); } private tapHandler...(egret.TouchEvent.TOUCH_TAP,this.tapHandler,this); } } 完善场景的切换逻辑 此时距我们点击开始按钮能有效果还差最后一步,那就是在场景控制器...加入背景图片:拖动组件 - 控件 - Image 控件到舞台,放在 Group 组里,将其作为背景,资源名为「bg_jpg」,设置约束为上下左右填充整个舞台。 接下来我们就要让「小 i」加入舞台了!...所有回收方块EUI的数组 private reBackBlockArr: Array = []; 如图所示: 这个数组 reBackBlockArr 这个数组,是对象池,用来存放超出屏幕的方块盒子...等这个 EUI 超出屏幕的时候,就是该销毁了, 把这个 EUI 从显示列表中删除,并且从 blockArr 拿出来放到 reBackBlockArr 中。
支持远程控制事件。当你这样做时,人们可以在锁定屏幕上选择播放、暂停和快进等动作,也可以通过与Siri或HomePod的互动来选择。有关开发人员指导,请参见远程命令中心事件。...当你的应用进入后台或设备锁定时,不要停止播放。例如,人们希望他们在查看邮件或让设备进入睡眠状态时,从你的应用开始播放的电视节目能够继续播放。...如果用户离开了播放屏幕,确保应用内的其他视频不会开始播放并打断流媒体内容。 如有必要,提供用于控制媒体播放的自定义接口。...使用MPRemoteCommandCenter可以接收远程命令。如果你使用MPNowPlayingInfoCenter,你可以通知系统元数据关于在设备上播放的音轨。...您可以将其作为附件列表集合视图中每个项目的tap处理程序来实现。
领取专属 10元无门槛券
手把手带您无忧上云