2017-01-18 10 views
2

J'ai codé des tests ui avec beaucoup de WaitForControlExists en eux. Cela provoque l'exécution lente de mes tests.ui codé contrôle interroger au lieu d'attendre le contrôle existe

Fondamentalement, si Playback.PlaybackSettings.SearchTimeout = 30000; et j'ai uicontrol.WaitForControlExists() il faut 30 secondes pour obtenir un retour de la méthode, même si le contrôle est affiché après 1 seconde.

Maintenant, je veux savoir s'il existe un moyen de quitter le WaitForControlExist dès que le contrôle existe? Dites, je "Sondez le contrôle existe" au lieu de "Attendre le contrôle existe".

Je réglerai la minuterie d'interrogation sur 1 seconde. Je vérifie chaque seconde si le contrôle existe. Si elle s'affiche au bout de 2 secondes (ou moins de 30 secondes), retournez true et arrêtez Polling. Si ce n'est pas le cas, continuez à essayer toutes les secondes si elle a duré 30 secondes, quittez et renvoyez false.

Répondre

1

utilisation uiControl.WaitForControlCondition (contrôle => control.Condition, délai d'attente);

Avec cela, vous pouvez mélanger et faire correspondre les conditions de contrôle que vous souhaitez rencontrer avant de procéder à l'exécution.

Le plus utile pour moi est l'état du contrôle et les styles. Amusez-vous bien :)

2

Vous pouvez le configurer comme suit:

var exists = uiControl.WaitForControlExists(100); 
var counter = 0; 
while(!exists) 
{ 
    Playback.Wait(1000); 
    counter++; 
    exists = uiControl.WaitForControlExists(100); 
    if(counter>30) 
     break; 
} 

Aussi, vous pouvez essayer d'utiliser WaitForControlReady