2017-01-26 4 views
0

Also verwende ich CodedUI, um einige Anwendungstests durchzuführen, und ich habe das Testframework größtenteils aufgebaut und alles scheint individuell zu funktionieren.Warten, bis eine Anwendung mit CodedUI vollständig geladen ist

Mein Problem ist, dass Ereignisse passieren, bevor die Anwendung vollständig geladen ist, so dass es im Wesentlichen nur auf eine leere Seite klicken.

Ich habe Playback.Wait(x) verwendet und das scheint nicht den Trick zu tun.

Ich habe auch versucht zu verwenden, aber höchstwahrscheinlich falsch, die WaitForControlExist() auch ohne echtes Glück.

Extrem neu in CodedUI, vor allem mit dem, wofür ich das verwende. So würde jede Hilfe sehr geschätzt werden.

EDIT nach Kommentaren unten:
Innen CodedUITest1.cs

[TestMethod] 
    public void CodedUITestMethod1() 
    { 
     this.UIMap.LaunchSoapUI(); //I WANT TO WAIT FOR THIS TO FULLY LOAD BEFORE GOING TO FindAndClickCustomFitNoRetest() 
     this.UIMap.FindAndClickCustomFitNoRetest(); 
     this.UIMap.ClickPlayBtn(); 
     this.UIMap.EnterEmployeeID(); 
    } 

Innen UIMap.Designer.cs

public void LaunchSoapUI() 
    { 
     // Launch '%ProgramW6432%\SmartBear\SoapUI-5.3.0\bin\SoapUI-5.3.0.exe' 
     ApplicationUnderTest soapUI530Application = ApplicationUnderTest.Launch(this.LaunchSoapUIParams.ExePath, this.LaunchSoapUIParams.AlternateExePath); 
     WaitForAUTLoad(soapUI530Application, 120); 
    } 

    public void WaitForAUTLoad(ApplicationUnderTest aut, int WaitTimeOut) 
    { 
     Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads; 
     aut.WaitForControlReady(WaitTimeOut * 1000); 
     Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly; 
    } 

Fehler: enter image description here

+0

Ich habe gerade gebucht eine Antwort auf diese gestern. Sehen Sie, wenn das hilft :) http://Stackoverflow.com/a/41838745/5212566 –

+0

@Prageeth Ich habe versucht, es zu implementieren und es scheiterte direkt beim Anruf. Ich verwende einen ApplicationUnderTest statt einen Browser, wie würde ich das ändern, um für mich zu arbeiten? –

Antwort

0

--ORIGINAL- -

Lastwartefunktion:

public void WaitForAUTLoad(ApplicationUnderTest aut, int WaitTimeOut) 
{ 
    Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads; 
    aut.WaitForControlReady(WaitTimeOut * 1000); 
    Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly; 
} 

und kann wie nennen:

ApplicationUnderTest soapUI530Application = ApplicationUnderTest.Launch(@"C:\Program Files\SmartBear\SoapUI-5.2.1\bin\SoapUI-5.2.1.exe"); 
    WaitForAUTLoad(soapUI530Application, 120); 

I das Verfahren an eine bestimmte Ladesteuerung aufrufen würde, wenn die Synchronisierung auf der gesamten Anwendung nicht nachgibt erwartetes Ergebnis. Sie können auch Methoden versuchen, wie WaitForControlPropertyEqual

--edit PER OP Anfrage -

It is never a best practice to edit designer.cs file as the changes made to it will be lost. See here on why!

ich eine Funktion auf einer separaten CS-Datei schreiben. Manche Dinge wie,

public ApplicationUnderTest LaunchAUT(string exePath) 
{ 
    return ApplicationUnderTest.Launch(exePath); 
} 

dann rufen, dass auf meinem Coded UI Prüfnorm

public void CodedUITestMethod1() 
    { 
     //Set path to SOAP UI Exe from your config 
     string SOAPUIExePath = @"C:\Program Files\SmartBear\SoapUI-5.2.1\bin\SoapUI-5.2.1.exe"; 
     ApplicationUnderTest SoapUI = LaunchAUT(SOAPUIExePath);    
     WaitForAUTLoad(SoapUI, 120); 
    } 
+0

Ich denke, ich mache das immer noch falsch, es scheitert an dem Methodenaufruf. Ich werde meinen ursprünglichen Post mit einigen Code-Snippets bearbeiten und sehen, ob es irgendwelche Einsichten gibt. Schätzen Sie Ihre bisherige Hilfe. –

+0

Kein Problem .. Auch den kompletten Fehler posten! –

+0

aktualisiert, um Schnipsel zu enthalten –

Verwandte Themen