2016-02-29 40 views
3

我正在使用Xamarin.UITest編寫測試,我想檢查特定UI按鈕的顏色。從Repl我可以抓住這樣的按鈕:如何檢查UITest中按鈕的顏色

>>> app.Query(c => c.Button()).First() 
Query for Button() gave 1 results. 
{ 
    Id => "buttonGo", 
    Description => "android.widget.Button{b312e568 VFED..C. ........ 26,234-454,314 #7f060033 app:id/buttonGo}", 
    Rect => { 
     Width => 428, 
     Height => 80, 
     X => 26, 
     Y => 328, 
     CenterX => 240, 
     CenterY => 368 
    }, 
    Label => null, 
    Text => "Go!", 
    Class => "android.widget.Button", 
    Enabled => true 
} 

不幸的是,似乎沒有任何財產,會給我的顏色。有沒有辦法讓我從按鈕中提取更多信息,或者以其他方式查詢我可以用來查找按鈕顏色的信息?


更新:所以我正在取得一些進展,感謝使用Invoke的建議。現在我正在努力做到以下幾點:

>>> app.Query(c => c.Button("buttonGo").Invoke("getBackground")) 

這應該叫getBackground,並返回我的背景繪製,而是引發以下錯誤:

Ignoring failed json serialisation of result of Query for Button("buttonGo").Invoke("getBackground"). Value was never requested 
Query for Button("buttonGo").Invoke("getBackground") gave no results. 
null 

如果我打電話的getHeight一切正常等等我有點困惑在這裏:

>>> app.Query(c => c.Button("buttonGo").Invoke("getHeight")) 
Query for Button("buttonGo").Invoke("getHeight") gave 1 results. 
[ 
    [0] 80 
] 

回答

0

你所尋找的是AppQuery.Invoke 見Xamarin.UITest DOCUME ntation「Invoke a Method on an AppResult or UI Element

更新:

我認爲你不能返回複雜的類型,但你可以鏈Invoke電話。我的情況是:

app.WaitForElement (c => c.Button ("buttonGo")); 
app.Query(c => c.Button("buttonGo").Invoke("getBackground").Invoke("getColor)); 

這將返回按鈕的顏色ID。

+1

Unfortunatley我得到null返回的調用(「getBackground」)不知道爲什麼 –

+1

這不起作用,因爲你需要一個強制轉換到'ColorDrawable'來調用getColor'方法。 – ridecar2