Enviar mediante progtwigción el evento tap a las coorderadas en segundo plano en iOS usando KIF

La idea es hacer una aplicación que pueda enviar un evento 'toque la pantalla en coorderadas (x, y)' continuamente en el background de otra aplicación en iOS. Piensa en un truco de "Cookie Clicker". Actualmente estoy ayudando a mis amigos en su aplicación, y mi trabajo es tratar de solucionarlo lo más posible. Tengo la ligera sensación de que tocar uno de sus botones tanto como sea posible hará que su aplicación falle, así que por qué estoy aquí.

El método está utilizando KIF junto con la ejecución de background en iOS para lograr esto.

  1. En una de las classs, el file KIFUITestActor.m tiene el código:

    - (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 shanetworkingApplication] 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 networkingundant of the test in _accessibilityElementWithLabel: CGPoint viewPoint = [view convertPoint:screenPoint fromView:nil]; [view tapAtPoint:viewPoint]; return KIFTestStepResultSuccess; }]; } 

    ¿Sería este el código que estoy buscando y cómo lo implementaría en Swift? (¿O Objective-C si facilita las cosas?)

  2. ¿Ejecutar la class como un service de background lograr la ejecución en segundo plano?

Muchas gracias si puedes responder esta pregunta.

Solutions Collecting From Web of "Enviar mediante progtwigción el evento tap a las coorderadas en segundo plano en iOS usando KIF"

Un par de opciones, dependiendo de lo que tenga acceso. Si tiene el IPA real de la otra aplicación que quiere 'fallar' y puede adjuntar un objective de testing, entonces KIF es una excelente opción.

Esta es una pequeña guía sobre las testings de interfaz de usuario con KIF (fácilmente disponible, enlace aquí ). Sin embargo, un breve resumen es:

  [tester tapViewWithAccessibilityLabel:@"Clear"]; 

Ese tipo de código debería tener un equivalente llamado tapViewAtPoint o algo tapViewAtPoint en esas líneas (la última vez que usé KIF fue hace un año, pero debería estar bien documentado como lo fue entonces).

Sin embargo, si NO tiene acceso a la aplicación que está intentando atacar, lo que parece más probable para este tipo de pregunta, entonces puede usar un enfoque diferente por completo.

Automator puede ayudarlo a progtwigr esto si al less puede download la aplicación en el simulador de iPhone. Como Xcode 9 creo que le permite hacer esto, esta parte no debería ser difícil, siempre y cuando la aplicación de destino esté en la tienda de aplicaciones.

Si no es así y no tienes el código, me gustaría tener curiosidad por saber cómo se está distribuyendo la aplicación, ya que podría haber una forma de utilizar una u otra opción que sugerí. ¡Buena suerte!

Edición: actualización basada en volver a leer la pregunta + request de recompensas una vez más

¿Ejecutar la class como un service de background lograr la ejecución en segundo plano?

Esto nuevamente depende de si puede ejecutarlo como un service en segundo plano. Si tiene acceso al código en sí, entonces podría hacerlo, aunque no estoy seguro de cuál es el objective de la ejecución en segundo plano en su pregunta descrita.

KIF no podrá trabajar en nada que no esté en primer plano. En general, los dispositivos iOS nunca networkingireccionan a una aplicación en segundo plano, por lo que si el vector de ataque que se está probando es tocar repetidamente una aplicación, la ejecución en segundo plano probablemente no sea la respuesta.

Desde su pregunta, esto se parece más a un caso de uso para paralelizar un bucle de toma, y ​​su problema parece que podría beneficiarse con la adición de la function de simulador paralelo de Xcode 9 .

Aunque aún no he probado esto personalmente, puedes hacer ejecuciones KIF paralelas en varios simuladores en una máquina con Xcode 9 . Es probable que esta sea la mejor manera de get tantos puntos de datos como sea posible sobre los problemas causados, ya que con las UI tests , puede tomar una captura de pantalla de la aplicación en cualquier momento. En Xcode 9 , creo que también hay una nueva function para grabar un video directamente desde el Simulator (y ya no necesita Quicktime ).