为啥我无法在 Xamarin UI 测试中使用 app.Device.IsPhone
Posted
技术标签:
【中文标题】为啥我无法在 Xamarin UI 测试中使用 app.Device.IsPhone【英文标题】:Why am I unable to use app.Device.IsPhone in Xamarin UI Tests为什么我无法在 Xamarin UI 测试中使用 app.Device.IsPhone 【发布时间】:2017-02-01 09:56:43 【问题描述】:我正在运行 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;
【问题讨论】:
app
的类型是什么?
你使用的是哪个 nuget 包?
@valdertero 我没有使用 nuget 包
【参考方案1】:
您可以访问从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.IsPhone 上收到以下错误“Xamarin.UITest.IDevice”不包含“Xamarin.UITest.IDevice”类型的IsPhone' and no extension method
IsPhone' 的定义' 可以找到。您是否缺少程序集引用?"
@Teague 您需要在问题中添加您是如何获取应用程序变量的,因为您似乎使用了错误的变量。【参考方案2】:
我最终使用了以下内容。我收到一条警告,告诉我它已过时并可以使用 Device 但它仍然有效:
bool isPhone = ((Xamarin.UITest.iOS.iOSApp)app).Config.IsPhone;
【讨论】:
以上是关于为啥我无法在 Xamarin UI 测试中使用 app.Device.IsPhone的主要内容,如果未能解决你的问题,请参考以下文章
xamarin UI 测试 - 无法加载我指向的本机 APK 路径
无法在 xamarin.forms 上运行 XAMARIN UI TEST,错误 System.Exception
Xamarin自动化测试ios。无法启动DeviceAgent ExitCode:65