为什么我无法在 Xamarin UI 测试中使用 app.Device.IsPhone

Why am I unable to use app.Device.IsPhone in Xamarin UI Tests

我正在 运行 宁 iOS 测试将 运行 针对 iPhone 和 iPad。该应用程序在两种设备上略有不同,因此我需要一种方法来区分测试 运行 针对的是哪一个。我可以看到有一个 IDevice.IsPhone 或 IDevice.IsTablet 属性,但这些是私有的,我无法访问它们。

是否有一种简单的方法可以找出您正在使用的设备或访问界面上的属性的方法?

    [SetUp]
    public void BeforeEachTest()
    {
        app = AppInitializer.StartApp(platform);
    }

    public bool DeviceIsiPad()
    {
        var device = app.Device;
        if (device.IsTablet)
        {
            return true;
        }
        else {
            return false;
        }
    }

您可以访问从 ConfigureApp.iOS.StartApp().

获得的 IApp 类型实例变量的 IApp.Device.IsPhone (& .IsTablet) 属性
[TestFixture]
public class Tests
{
    iOSApp app;

    [SetUp]
    public void BeforeEachTest()
    {
        app = ConfigureApp.iOS.StartApp();
    }

    [Test]
    public void ViewIsDisplayed()
    {
        AppResult[] results = null;
        if (app.Device.IsPhone)
        {
            results = app.WaitForElement(c => c.Child("UIView"));
        }
        if (app.Device.IsTablet)
        {
            results = app.WaitForElement(c => c.Child("UIView"));
        }
        app.Screenshot("First screen.");
        Assert.IsTrue(results.Any());
    }
}

我最终使用了以下内容。我收到一条警告,告诉我它已过时并使用 Device 但它仍然有效:

bool isPhone = ((Xamarin.UITest.iOS.iOSApp)app).Config.IsPhone;