【发布时间】:2018-02-04 07:48:19
【问题描述】:
我们的想法是制作一个可以在 iOS 中另一个应用程序的后台连续发送“在坐标 (x,y) 处点击屏幕”事件的应用程序。想想“Cookie Clicker”作弊。我目前正在协助我的朋友开发他的应用程序,而我的工作是尝试尽可能多地解决它。我有一种轻微的感觉,尽可能多地点击他的一个按钮会破坏他的应用程序,这就是我在这里的原因。
该方法是使用 KIF 以及 iOS 中的后台执行来实现的。
-
在其中一个类中,文件 KIFUITestActor.m 的代码如下:
- (void)tapScreenAtPoint:(CGPoint)screenPoint { [self runBlock:^KIFTestStepResult(NSError **error) { // Try all the windows until we get one back that actually has something in it at the given point UIView *view = nil; for (UIWindow *window in [[[UIApplication sharedApplication] windowsWithKeyWindow] reverseObjectEnumerator]) { CGPoint windowPoint = [window convertPoint:screenPoint fromView:nil]; view = [window hitTest:windowPoint withEvent:nil]; // If we hit the window itself, then skip it. if (view != window && view != nil) { break; } } KIFTestWaitCondition(view, error, @"No view was found at the point %@", NSStringFromCGPoint(screenPoint)); // This is mostly redundant of the test in _accessibilityElementWithLabel: CGPoint viewPoint = [view convertPoint:screenPoint fromView:nil]; [view tapAtPoint:viewPoint]; return KIFTestStepResultSuccess; }]; }这会是我正在寻找的代码吗?我将如何在 Swift 中实现它? (或者 Objective-C 让事情变得更容易?)
- 将类作为后台服务运行会实现后台执行吗?
如果你能回答这个问题,非常感谢。
【问题讨论】:
-
如果我的理解正确,您想要测试涉及轻击手势的用户交互,以验证应用不能承受重复的 UITouch/轻击手势...您能澄清一下吗?跨度>
-
是的,这听起来确实像一个奇怪的请求/程序。我被要求故意破坏一个应用程序,我希望在该应用程序上无法承受多次点击调用服务器的按钮。作为一名程序员,公认的逻辑是我也......称它为“懒惰”自己点击按钮,如果我的朋友(应用程序开发人员)想自己测试错误,我可以发送给他点击“黑客”。目标是将触摸手势发送到屏幕上的某些坐标,这将是按钮。即在应用程序的屏幕上轻按没有手指的轻按。这更清楚了吗?
-
A)中的“自动抽头测试仪”在第二个应用程序中,B)在后台模式下运行有什么意义?如果有一个框架可以根据需要自动进行测试,在添加到您的朋友应用程序的重复代码库之后,您会愿意尝试吗?
-
我的操作更多是凭直觉而不是实际情况。说实话,我不是唯一的测试人员,手头的工作是为了获得他将给予的奖品。所以a)你的方法是一种可能的方法,但我不想浪费他的时间; b) 他不会帮助我放弃他的奖品。总而言之,这是个人程序。此外,我可能会将这个问题的解决方案应用到未来的项目中。谢谢。
-
我现在明白你在问什么,并且相信这是可以做到的。我这样说是因为我遇到了从 iOS 设备键盘读取数据的间谍软件,称为键盘记录器,它与您正在寻找的领域相同。
标签: ios objective-c iphone background kif