2017-03-14 3 views

Antwort

2

Ich bin mir nicht ganz sicher, was Sie mit "richtig gespielt" meinen. Sie können testen, ob ein Video abgespielt wird, wenn Sie die Wiedergabetaste drücken. Aber du kannst nicht wirklich testen, ob es das richtige Video ist.

Das Drücken der Wiedergabetaste eines über Video-Tag eingebetteten Videos ist etwas knifflig. Ich kann mir zwei Ansätze vorstellen:

1. Versuchen Sie, den Test aufzuzeichnen.

Abhängig von der Struktur Ihres HTML kann der von Xcode erstellte Code ziemlich hässlich sein (Noch schlimmer: Manchmal kann Xcode nicht einmal das Drücken der Wiedergabetaste aufzeichnen).

nahm ich einen UITest für eine Webansicht, die diese URL geladen: https://www.w3schools.com/html/html5_video.asp

Das ist, was ich habe:

func testVideo() { 
     let app = XCUIApplication() 
     app.launch() 

     app.children(matching: .window).element(boundBy: 0).children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .other)["HTML5 Video"].children(matching: .other).element(boundBy: 5).buttons["Start Playback"].tap() 

     sleep(2) 

     XCTAssert(app.buttons["Done"].exists) 

    } 

Yuck! Wirklich hässlich, aber es funktioniert. Der Test startet das Video und testet, ob die "Fertig" -Schaltfläche vorhanden ist, was bei der Wiedergabe der Videos der Fall ist. (Ich hatte die sleep Anweisung hinzufügen, um die Behauptung Arbeit zu machen)

Wenn der Test der Aufnahme funktioniert nicht, es gibt eine andere Lösung, die Sie verwenden können:

2. Verwenden Sie einen Wasserhahn auf eine Koordinate zu starten das Video:

func testVideo() { 
     let app = XCUIApplication() 
     app.launch() 

     sleep(2) 

     app.windows.element(boundBy: 0).coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.8)).tap() 

     sleep(2) 

     XCTAssert(app.buttons["Done"].exists) 
    } 

Hier gelangen Sie das Fenster der App und tippen Sie auf eine Koordinate, die als 50% der Breite und 80% der Höhe definiert ist. (Sehen Sie sich den Screenshot an, um zu sehen, dass das in meinem Fall die Position der Schaltfläche ist). Natürlich müssen Sie Ihre eigene Koordinate definieren, die in Ihrem Fall funktioniert.

enter image description here

Diese Lösung funktioniert, aber es ist wirklich wackelig. Wenn sich die Position des Videos auf der Seite ändert, wird der Test unterbrochen. Auch die Koordinaten ändern sich für verschiedene Geräte. Und Sie müssen mit den sleep Anweisungen experimentieren, damit es funktioniert. Daher sollte es wahrscheinlich nur als letztes Mittel verwendet werden.

Prüfung, ob ein Video tatsächlich gespielt wird:

Wenn der Test das Video startet die App in Vollbild-Modus geht und spielt das Video des Media-Player verwenden. Um zu testen, ob ein Video tatsächlich abgespielt wird, können Sie auf den Positionsregler zugreifen und dessen value überprüfen. Der Wert des Schiebers ist eine Zeichenkette (zB „12%), so zu prüfen, ob es nicht noch bei 0% ist, dass Sie es in einen numerischen Wert umgewandelt haben und behaupten, dass dieser Wert größer als 0:

func testVideo() { 
     let app = XCUIApplication() 
     app.launch() 

     sleep(2) 

     app.windows.element(boundBy: 0).coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.8)).tap() 

     sleep(2) 

     let currentPositionSlider = app.sliders.element(boundBy: 0) 
     let percentageValueString = (currentPositionSlider.value as! String).replacingOccurrences(of: "%", with: "") 
     let percentangeValue = Int(percentageValueString) ?? 0 
     XCTAssert(percentangeValue > 0) 
    } 
+0

Dank für die Hilfe! Eigentlich habe ich kein Problem, zum Schritt zu gelangen, um das Video abzuspielen, aber nach dem Video wird es im Vollbildmodus abgespielt und auf einem Media Player abgespielt, der außerhalb des Anwendungsbereichs liegt (denke ich?) und ich kann ' t bestätigen Sie nichts von dort.Irgendeine Idee, wie man überprüft, ob der Mediaplayer den richtigen Wert nicht immer 00:00 hat? –

+0

Sie können auf den Schieberegler für die aktuelle Position des Media Players zugreifen und prüfen, ob der Wert größer als 0 ist. Bitte lesen Sie meine bearbeitete Antwort. – joern

+0

Das ist großartig! Werde das überprüfen und Sie später darüber informieren! Vielen Dank Alter! –

Verwandte Themen