Aracılığıyla paylaş


Kayıttan Yürütme Sırasında Belirli Olaylar için Kodlanmış UI Testlerini Bekletme

Kodlu bir UI test kayıttan yürütmesinde, pencerenin belirmesi, işlem çubuğunun kaybolması vb. gibi belirli olayların olmasını beklemesi için testi yönlendirebilirsiniz. Bunu yapmak için aşağıdaki tabloda açıklandığı gibi uygun UITestControl.WaitForControlXXX() yöntemini kullanın. Bir denetimin WaitForControlEnabled() yöntemi kullanılarak etkinleştirilmesini bekleyen kodlanmış Kullanıcı Arabirimi testi örneği için bkz. İzlenecek yol: Kodlanmış Bir UI Testi Oluşturmak Düzenlemek ve Sürdürmek.

UITestControl.WaitForControlXXX() Yöntemleri

UITestControl.WaitForControlXXX() yöntemleri

Açıklama

WaitForControlReady()

Fare veya klavye girişini kabul etmek için denetimin hazır olmasını bekler. Motor, bu API'yı tüm eylemlerin herhangi bir işlem yapmadan önce hazır olması gereken denetimi beklemeleri için örtülü olarak çağırır. Ancak, bazı ezoterik senaryolarda, açık çağrı yapmanız gerekebilir.

WaitForControlEnabled()

Sihirbaz sunucuya çağrılar yaparak girişin bir takım zaman uyumsuz doğrulamasını yaparken denetimin etkinleştirilmesini bekler. Örneğin, sihirbazın Sonraki düğmesinin etkin () olmasını bekleyebilirsiniz. Bu yöntemin örneği için bkz. İzlenecek yol: Kodlanmış Bir UI Testi Oluşturmak Düzenlemek ve Sürdürmek.

WaitForControlExist()

Denetimin UI'de belirmesini bekler. Örneğin, uygulama parametrelerin doğrulanmasını tamamladıktan sonra bir hata iletişim kutusu bekliyorsunuz. Doğrulama için harcanan zaman değişkendir. Bu yöntemi hata iletişim kutusunu beklemek için kullanabilirsiniz.

WaitForControlNotExist()

Denetimin UI'den kaybolmasını bekler. Örneğin, ilerleme çubuğunun kaybolmasını bekleyebilirsiniz.

WaitForControlPropertyEqual(String, Object)

Denetimin belirlenmiş özelliğinin verilen değere sahip olmasını bekler. Örneğin, durum metninin Bitti olarak değişmesini beklersiniz.

WaitForControlPropertyNotEqual(String, Object)

Denetimin belirlenmiş özelliğinin verilen değerin tersine sahip olmasını bekler. Örneğin, düzenleme kutusu salt okunur olmamasını, başka bir deyişle düzenlenebilir olmasını beklersiniz.

WaitForControlCondition(Predicate<UITestControl>)

Belirlenmiş koşulun true olarak dönmesini bekler. Bu, yapılan bir denetimde karmaşık bekleme işlemi (OR koşulları gibi) için kullanılabilir. Örneğin, aşağıdaki kodda gösterildiği gibi durum metni Başarılı veya Başarısız olarak değişene kadar bekleyebilirsiniz:

// Define the method to evaluate the condition 
private static bool IsStatusDone(UITestControl control) 
{ 
    WinText statusText = control as WinText; 
    return statusText.DisplayText == "Succeeded" || statusText.DisplayText == "Failed"; 
} 
// In test method, wait till the method evaluates to true 
statusText.WaitForControlCondition(IsStatusDone);

WaitForCondition<T>(T, Predicate<T>)

Önceki yöntemler, UITestControl'un örnek yöntemleridir. Bu yöntem, statik bir yöntemdir. Bu yöntem belirlenmiş koşulun true olması için de bekler, fakat çoklu denetimlerde, (OR durumları gibi) karmaşık bekleme işlemi için kullanılabilir. Örneğin, aşağıdaki kodda gösterildiği gibi durum metni Başarılı olarak değişene ya da bir hata iletisi görüntülenene kadar bekleyebilirsiniz:

// Define the method to evaluate the condition 
private static bool IsStatusDoneOrError(UITestControl[] controls) 
{ 
    WinText statusText = controls[0] as WinText; 
    WinWindow errorDialog = controls[1] as WinWindow; 
    return statusText.DisplayText == "Succeeded" || errorDialog.Exists; 
} 
// In test method, wait till the method evaluates to true 
UITestControl.WaitForCondition<UITestControl[]>(new UITestControl[] { statusText, errorDialog }, IsStatusDoneOrError); 

Bu yöntemler aşağıdaki davranışa sahiptir:

  • Bekleme başarılı ise yöntemler doğru, başarısız ise yanlış döndürür.

  • Bekleme işlem için kesin zaman aşımı belirtilir WaitForReadyTimeout özelliği. Bu özelliğin varsayılan değeri 60000 milisaniye (bir dakika)' dir.

  • Yöntemler milisaniyelerde bir açık zaman aşımı almak için aşırı yüklemeye sahiptir. Ancak, bekleme işlemi denetim için örtülü bir arama ile sonuçlanırsa ya da uygulama meşgul olduğunda, gerçek bekleme süresi belirtilen zaman aşımından daha fazla olabilir.

Önceki işlevler güçlü ve esnektir ve neredeyse tüm koşulları karşılaması gerekir. Ancak, bu yöntemler gereksinimlerinizi karşılamadığı durumda ve kodunuzda bir Wait(Int32) ya da bir Sleep(Int32) kodlamanızı gerekiyorsa, Thread.Sleep() API yerine Playback.Wait() kullanmanız önerilir. Bunun nedenleri şunlardır:

  • ThinkTimeMultiplier özelliğini uyku süresini değiştirmek için kullanabilirsiniz. Varsayılan olarak, bu değişken 1'dir, ancak kodun her yerindeki bekleme süresini değiştirmek için bunu azaltabilir veya artırabilirsiniz. Örneğin, özellikle bir yavaş ağ veya diğer yavaş performans çalışması üzerinde test yapıyorsanız, tüm konumlarda %50 ilave bekleme eklemek için, bu değişkeni bir konum üzerinde (veya hatta yapılandırma dosyası üzerinde) 1,5 olarak değiştirebilirsiniz.

  • Playback.Wait() içten Thread.Sleep() çağırır (sonra yukarıdaki hesaplamalar) daha küçük parçalar için-kullanıcı cancel\break işlem için kontrol ederken döngü içinde. Diğer bir deyişle, uyku özel durum atsa da atmasa da, Playback.Wait() beklemenin bitişinden önce kayıttan yürütmeyi iptal etmenize olanak verir.

Not

Kodlu UI Test Düzenleyicisi kodlanmış UI testlerinizi kolaylıkla değiştirmenizi sağlar. Kodlanmış UI Test Düzenleyicisi kullanarak test yöntemlerinizi bulabilir, görüntüleyebilir ve düzenleyebilirsiniz. Ayrıca UI eylemlerini ve bu eylemlerin UI denetim eşlemesindeki ilişkili denetimlerini düzenleyebilirsiniz. Kodlu UI Test Düzenleyicisi Microsoft Visual Studio 2010 Feature Pack 2'ye dahil edilmiştir. Özellik paketini karşıdan yüklemek için MSDN aboneliğiniz, Microsoft BizSpark veya MSDN Academic Alliance ile birlikte Visual Studio 2010 Ultimate, Visual Studio 2010 Premium veya Test Professional 2010 uygulamalarına sahip olmanız gerekir. Daha fazla bilgi için bkz. Editing Coded UI Tests Using the Coded UI Test Editor ve Microsoft Visual Studio 2010 Feature Pack 2.

Ayrıca bkz.

Görevler

Kodlanmış UI Testi Nasıl Oluşturulur

Kavramlar

Kullanıcı Arayüzü ile Otomatik UI Testlerini Test Etme

Kodlanmış UI Testleri ve Eylem Kayıtları için Desteklenen Yapılandırmalar ve Platformlar

Diğer Kaynaklar

İzlenecek yol: Kodlanmış Bir UI Testi Oluşturmak Düzenlemek ve Sürdürmek

Kodlanmış UI testinin anatomisi