2016-04-18 35 views
1

我試圖建立一個UI測試在Xamarin窗體項目UITest上Xamarin寫作形式StyleId的標籤,而不是ID

我跟着引導here並添加StyleId到我的用戶名控制

<Entry x:Name="username_name" 
     StyleId="username_styleid" 
     Text="{Binding Username, Mode=TwoWay}" 
     IsEnabled="{Binding IsBusy, Converter={StaticResource ReverseBoolConverter}}" 
     Style="{StaticResource TextboxLight}" 
     Placeholder="{Binding UsernameLabel}" /> 

我添加代碼裝入Android MainActivity

Forms.ViewInitialized += (sender, e) => { 
    if (!string.IsNullOrWhiteSpace(e.View.StyleId)) 
    { 
     e.NativeView.ContentDescription = e.View.StyleId; 
    } 
}; 

當運行測試和使用REPL,我可以看到StyleId已經作爲標籤屬性輸出,而TH一個id屬性

enter image description here

有沒有人成功地得到這個工作?

回答

4

這是按設計工作。在iOS上,您會看到數值顯示爲id;在Android上它將顯示爲label

app.Query(c=>c.Marked("username_styleid"))將跨平臺工作。 app.Query("username_styleid")的縮寫形式也是一樣。

Marked將在iOS的id字段中找到具有指定值的元素; Android上的label字段以及text。因此,在編寫測試時使其變得簡單而有用的一個關鍵是使StyleID(或AutomationId)與您的應用中出現的文本不同。

+0

謝謝格倫。我開始意識到這一點,但很高興得到證實。 –

2

使用StyleId很快就會被2.2.0所淘汰。

我沒有親自測試過,但還沒有

的AutomationID支持

Xamarin.Forms現在有用於與Xamarin UITest或其他測試框架的使用設置自動化 標識符一流的支持。 只需設置AutomationID屬性,應該允許自動化 框架查找並與您的控件進行交互。

不確定AutomationId轉換爲什麼,但希望得到一個ID。

+0

感謝亞當,好消息。我希望它能夠很好地工作,因爲我們有很多UI測試需要編寫。 –

+0

剛剛玩過2.2.04-pre2和新的AutomationId屬性。不幸的是,它仍然輸出它作爲一個標籤,而不是一個ID –

+0

很高興看到它確認上面。我剛剛仔細檢查,但我有一種感覺,它本來就是標籤。 –

相關問題