2016-05-09 4 views
1

Wir verwenden Calabash-Android für unsere Funktionstests hier und wir erleben seltsame Verhaltensweisen. Wir haben einige einfache Szenario wie:Calabash Android zufällige Fehler wegen der Elemente nicht gefunden

When I skip the tutorial 
Then I must land on my 'fancy' screen 

Dieses Szenario die meiste Zeit erfolgreich zu sein, aber manchmal (etwa 10-15% der Zeit) 2 Ausfälle sind möglich. Der erste ist, weil das Element von von calabash-android nicht gefunden wurde (es ist einfach eine Schaltfläche mit der ID button_ok). Bei der Überprüfung des Screenshots sehen wir das Element, das ziemlich seltsam ist. Ich vermutete die Animation des Elements, also habe ich eine post_timeout hatte, wie folgt aus:

tap_when_element_exists("* id:'button_ok'", :post_timeout => 2) 

aber nichts geändert.

Der zweite mögliche Fehler ist, wenn der Schritt When I skip the tutorial erfolgreich übergeben wird, aber der nächste Schritt, wo wir überprüfen, dass wir auf der richtigen Seite sind, scheitert, weil die Seite nicht geändert hat ... Auf dem Screenshot von Calabash genommen sind wir tatsächlich auf der Seite des Tutorials, nicht auf dem nächsten wie erwartet. Wie ist es möglich, dass der Schritt, in dem wir die Seite wechseln, erfolgreich ist?

Hat schon jemand diese Art von zufälligen Ausfällen konfrontiert?

(Sorry für schlechte Englisch nicht meine Muttersprache :()

+0

Kannst du die Kalebassenprotokolle posten, hilft das dabei, das Problem zu verstehen. BTW, Kalebasse protokolliert den fehlgeschlagenen Schritt. – danypata

+0

Nun leider habe ich nicht viele Protokolle zu zeigen, wenn der Schritt 'Wenn ich das Tutorial überspringe 'fehlgeschlagen ist, weil ein Element nicht gefunden wird und ich bekomme diesen Fehler' Timeout wartet auf Elemente: * id: 'button_ok '(Calabash :: Android :: WaitHelpers :: WaitError) 'aber auf dem Screenshot ist das Element vorhanden und die meiste Zeit ist es gefunden. Wenn der Schritt 'Dann muss ich auf meinem 'ausgefallenen' Bildschirm landen, fehlgeschlagen ist, habe ich den gleichen Fehler (ein Timeout wartet auf ein anderes Element), aber in diesem Fall ist es logisch, da das Element nicht angezeigt wird, da die Seite nicht geändert wurde in 'Wenn ich das Tutorial überspringe '. – Myx

Antwort

1

ich ähnlichen Zufallsausfall auf bestimmte Geräten konfrontiert. Das Problem ist manchmal das Element, das Sie später als Timeout von vorherigem Schritt gemacht zu berühren versuchen. In mein Fall, manchmal zu lange Tastatur wurde unter Kalebasse verschwinden Sperrelemente hinter dem zu sehen. Einen richtigen Ansatz solche Fehler zu vermeiden, wäre für das Element zu warten zu erscheinen.

wait_for_element_exists(uiquery) 

Gebrauch oben vor jedem solchen Berührungsereignis und es könnte funktionieren

+0

Vielen Dank für Ihren Vorschlag, aber wir verwenden bereits wait_for_element (mit einem Timeout von 30 Sekunden) und das Problem besteht leider weiterhin. :( – Myx

Verwandte Themen