2012-12-18 4 views
5

Ok, das macht mich verrückt. Ich habe ein kleines CI-Build-System laufen. Und ich mache UI-Tests meiner Anwendung mit UIAutomation. Da die Anwendung CoreLocation verwendet, erhalte ich beim ersten Start der Anwendung eine kleine Warnung, in der ich aufgefordert werde, zu bestätigen, dass mein Standort verfolgt werden soll. Das wäre großartig und alles, aber die Warnung ist nicht Teil meiner eigenen Anwendung und ich kann UIAutomation nicht verwenden, um damit zu interagieren. Gibt es eine Lösung, um diese Warnung zu bestätigen, ohne die Schaltfläche manuell zu erfassen?Wie Sie mit dem Alarm "_APPNAME_ möchte Ihren aktuellen Standort verwenden" umgehen, durch UIAutomation

Danke.

P.S. Die Entfernung von CoreLocation für einen Testaufbau ist keine Option.

Antwort

2

Die einzige Möglichkeit, die ich am vorherigen Ort, an dem ich gearbeitet habe, umgangen habe, war, eine kleine App für Apple-Skripte zu schreiben, die die Warnung für dich schließen kann.

Sie sollten in der Lage sein, einige einfache UI-Skripts auszuführen, um die Warnung auf dem iOS-Simulator zu schließen.

Offensichtlich nehme ich an, dass Sie auf dem Simulator laufen und nicht Gerät für Ihre Tests.

Wie Lage Benachrichtigung über Apple Script für iPhone Simulator

  1. In Systemeinstellungen schließenZugänglichkeit eröffnen. In der linken unteren Ecke stellen Sie sicher die Option Zugriff für Hilfsgeräte

Apple-Script aktiviert auszuführen, nachdem Sie app im Simulator gestartet hat und der Alarm wird angezeigt, so dass Sie diese nach einigen müssen laufen verzögern.

tell application "iPhone Simulator" 
    activate 
end tell 

tell application "System Events" 
    tell process "iPhone Simulator" 
     click button "OK" of window 1 
    end tell 
end tell 
+0

Ihre Annahme richtig ist, aber ich würde immer noch die Fähigkeit haben, wie meine Tests auf einem echten Gerät auf einige auszuführen Zeit.Aber wie auch immer, kannst du mir ein Beispiel für dieses Skript geben? – carlossless

+0

Lassen Sie mich wissen, wenn dieses Apfelskript für Sie funktioniert, habe ich es auf meinem iPhone-Simulator ausprobiert und es hat die Warnung ohne Probleme gelöscht. – Shaun

1

Es ist tatsächlich möglich, mit dieser Warnung zu interagieren. Alle Warnungen, die während der Ausführung Ihrer App angezeigt werden, können bearbeitet werden, indem Sie einen onAlert Handler zuweisen, bevor Sie auslösen.

Basierend auf der Frage, die Sie gestellt haben, klingt es so, als würden Sie die CLLocationManager sofort beim Start der App auslösen. Wenn möglich, versuchen Sie, es um eine halbe Sekunde oder so zu verzögern. Dann können Sie in Ihrem UI-Automation-Skript sofort gleich zu Beginn einen Alert-Handler zuweisen. Etwas wie folgt aus:

UIATarget.onAlert = function(alert) { 
    alert.defaultButton().tap(); 
    return true; 
}; 

, der die Warnung erzählt die Standard (Bestätigung), um tippen und die return true erzählt die Alarmhandhabungsmechanismus, den wir damit umgegangen. Wenn Sie false zurückgegeben haben, würde das System denken, dass es auf die Abbrechen-Schaltfläche tippen muss (was das Standardverhalten ist).

Hoffe, dass hilft!

+0

Nein, immer noch App nicht vorderste Fehler. Der Versuch, dies manuell zu umgehen, führt zu zufälligen Abstürzen innerhalb der Instrumente. – carlossless

0

Above-Lösung, die

Applescript-Skript in Gurke Skript bettet
Given /^I am on the GPS permission screen$/ do 
IO.popen("osascript", "w") do |f| 
# applescript to OK sharing of Current Location 
f.puts <<-eos 
    tell application "iPhone Simulator" 
     activate 
    end tell 

    tell application "System Events" 
     tell process "iPhone Simulator" 
      repeat 
       try 
        click button "OK" of window 1 
        exit repeat 
       end try 
      end repeat 
     end tell 
    end tell 
eos 

Ende Ende

Verwandte Themen