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

时间:2017-02-01 09:56:44

标签: c# xamarin xamarin.ios uitest

我正在运行针对iPhone和iPad运行的iOS测试。该应用程序在两个设备上略有不同,因此我需要一种方法来区分正在运行哪个测试。我可以看到有一个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;
        }
    }

2 个答案:

答案 0 :(得分:1)

您可以访问从IApp.Device.IsPhone获得的.IsTablet类型的实例变量上的IApp(& ConfigureApp.iOS.StartApp())属性。

[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());
    }
}

答案 1 :(得分:0)

我最终使用了以下内容。我收到一个警告告诉我它已经过时并且使用Device但它仍然可以工作:

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