在 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,所以它有 属性 IsFocused
。 Android.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]
目标是检查元素是否有焦点。我偶然发现了 this solution。 但结果是错误的。 这是与我正在做的类似的代码:
app.Query(x => x.Marked("AutomationId").Child(2).Invoke("IsFocused"))[0]
REPL window 中的输出是这样的:
{
error => [
],
receiverClass => [
],
receiverString => [
],
methodName => [
]
}
目标元素是 Xamarin.Forms.Entry,所以它有 属性 IsFocused
。 Android.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]