如何为 Xamarin 按钮编写 UITest?

How do I write UITests for Xamarin Buttons?

我正在尝试在 Xamarin 中编写跨平台测试来检查按钮上的标签。这适用于我 XAML:

中的简单 <Label /> 项目
static readonly Func<AppQuery, AppQuery> Welcome = c => c.Marked("Welcome").Text("Welcome!");

但是当我用 <Button /> 尝试同样的事情时:

static readonly Func<AppQuery, AppQuery> NewButton = c => c.Button("NewLine").Text("New Line");

我的 iOS 测试失败,但 Android 测试通过。

问题似乎是 XAML 字段映射不同,具体取决于我是 运行 iOS 还是 Android。

这是我在Android中看到的:

这就是我在 iOS 中看到的:

在 Android 中,AutomationId 映射到 LabelText 映射到 TextLabel 字段不不存在)。

在 iOS 中,AutomationId 映射到 IdText 映射到 Label(并且 Text 为空)。

这是否意味着我需要为 iOS 和 Android 编写不同的测试?或者有更聪明的方法吗?

为了继续前进,我只是这样做了……但感觉不是最理想的。

private void TestButton(string automationId, string text, string errorMessage)
{
    Func<AppQuery, AppQuery> query = c => c.Button(automationId);

    AppResult[] result = app.Query(query);

    Assert.IsTrue(result.Length > 0, "No buttons with ID '" + automationId + "' found.");

    var textField = result[0]?.Text;
    var labelField = result[0]?.Label;

    Assert.IsTrue(textField == text || labelField == text, errorMessage);
}