簡體   English   中英

Xamarin.UITest:如何暫停測試步驟

[英]Xamarin.UITest: How To Pause a Test Step

我有一個用C#/ Xamarin編寫的UITest,測試執行得太快,導致它失敗。 在執行下一步之前,我需要測試等待圖像出現在屏幕上。

如何暫停Xamarin UITest並使其等待圖像加載到屏幕上,然后再繼續下一步?

根據我的經驗,有幾種方法可以暫停或減慢Xamarin.UITest。

最好的辦法

使用WaitForElement API。

例如,我在這里等待名為“imageButton”的Button。

app.WaitForElement(x => x.Marked("imageButton"));

上面的示例在執行另一個步驟之前等待元素“imageButton”出現。

其他方式

如果您不知道要與哪個元素進行交互,或者只是想暫停Xamarin.UITest,則可以使用Thread.Sleep

Thread.Sleep(8000);

在這里,我暫停了Xamarin.UITest 8秒。 請務必注意,您需要添加此庫以使用Thread.Sleep

using System.Threading;

希望這可以幫助!

“暫停”UITest的問題

您詢問:

“我怎樣才能暫停Xamarin.UITest並等待圖像在屏幕上加載,然后繼續下一步呢?”

可以使用Thread.Sleep()類的東西暫停Xamarin.UITest,無論你需要多長時間。 但是,問題在於Thread.Sleep ()以不靈活的方式凍結測試運行。 例如,如果設置Thread.Sleep (10000) ,則線程將暫停10秒,無論您的應用程序實際加載所需元素的時間長短。

如果您的圖片只需1秒鍾就可以加載更快的設備,那么使用Thread.Sleep(10000)您的測試仍然需要至少 10秒鍾。 更糟糕的是,如果你使用這種方法並且沒有Thread.Sleep足夠長時間,測試仍然會失敗; 因此,您必須強制您的測試每次運行都與“最壞情況”一樣慢。 更多信息: Thread.Sleep文檔

通過等待UI元素而不“暫停”執行的解決方案

Xamarin.UITest具有IApp.WaitForElementIApp.WaitForNoElement API來處理這些場景。 這些API優於Thread.Sleep因為您可以自定義恢復的條件,而不僅僅是等待一段時間。

此代碼段示例將等待90秒,以便顯示標記或ID為“myButton”的元素。

    // Wait up to 90 seconds for myButton to appear             
    app.WaitForElement(c=>c.Marked("myButton"), "Could not find myButton", new TimeSpan(0,0,0,90,0));

如果元素加載只需要30秒,那么app.WaitForElement將在30秒后繼續運行,只會在等待整整90秒之后仍然沒有出現該元素,因此只會拋出錯誤“找不到myButton” 。

使用默認超時和錯誤消息的簡單查詢

您也可以使用這些API調用中的任何一個而不定義超時長度,在這種情況下,對於本地UITests,它們將在15秒后超時,或者如果在Xamarin Test Cloud中運行,則將在1分鍾后超時。 來源: Xamarin.UITest“超時和等待”指南

這是上述查詢的最簡單形式,使用默認超時和默認錯誤消息“Timed out waiting for element ...”:

    app.WaitForElement (x => x.Marked ("myButton"));

如果您不等待特定UI元素並且不想睡眠當前線程,則此解決方案有效:

public static void WaitForTimeSpan(IApp app, TimeSpan timeSpan)
{
    try
    {
        app.WaitForElement(c => c.Text("BLAH BLAH BLAH"), "Waiting for something, killing time", timeSpan);
    }
    catch (Exception)
    {
        //do nothing we just wanted to kill some time
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM