在 xamarin.uitest returns 错误中从 app.Query 调用方法

Invoking method from app.Query in xamarin.uitest returns error

目标是检查元素是否有焦点。我偶然发现了 this solution。 但结果是错误的。 这是与我正在做的类似的代码:

app.Query(x => x.Marked("AutomationId").Child(2).Invoke("IsFocused"))[0]

REPL window 中的输出是这样的:

{
    error => [

    ],
    receiverClass => [

    ],
    receiverString => [

    ],
    methodName => [

    ]
}

目标元素是 Xamarin.Forms.Entry,所以它有 属性 IsFocusedAndroid.Views.View 还包含 属性 IsFocused。我尝试将名称 "IsFocused" 更改为 "getIsFocused"、"get_IsFocused" 和 "GetIsFocused",但结果是一样的。我错过了什么?

找出问题所在。

  • 首先,IsFocused是属性(不是方法),所以你需要使用方法Property而不是Invoke
  • 其次,获取属性后需要在同一个查询中申请Value<>方法
  • 第三,它是 Focused 而不是 IsFocused,即使 属性 在 Xamarin 和 Android 中的名称都是 IsFocused.

所以在这种情况下,代码将如下所示:

app.Query(x => x.Marked("AutomationId").Child(2).Property("Focused").Value<bool>())[0]