Xamarin Forms 上的 UITest 将 StyleId 写为标签而不是 ID
Posted
技术标签:
【中文标题】Xamarin Forms 上的 UITest 将 StyleId 写为标签而不是 ID【英文标题】:UITest on Xamarin Forms writing StyleId as Label rather than ID 【发布时间】:2016-04-18 01:05:58 【问题描述】:我正在尝试在 Xamarin 表单项目上设置 UI 测试
我按照指南 here 并将 StyleId 添加到我的用户名控件
<Entry x:Name="username_name"
StyleId="username_styleid"
Text="Binding Username, Mode=TwoWay"
IsEnabled="Binding IsBusy, Converter=StaticResource ReverseBoolConverter"
Style="StaticResource TextboxLight"
Placeholder="Binding UsernameLabel" />
我在 android MainActivity 中添加了代码
Forms.ViewInitialized += (sender, e) =>
if (!string.IsNullOrWhiteSpace(e.View.StyleId))
e.NativeView.ContentDescription = e.View.StyleId;
;
当我运行测试并使用 REPL 时,我可以看到 StyleId 已作为标签属性而不是 id 属性输出
有没有人设法让它工作?
【问题讨论】:
【参考方案1】:这是按设计工作的。在 ios 上,您将看到该值显示为 id
;在 Android 上,它将显示为 label
。
app.Query(c=>c.Marked("username_styleid"))
可以跨平台工作。 app.Query("username_styleid")
的缩写形式也一样。
Marked
将在 iOS 上的 id
字段中找到具有指定值的元素; Android 上的 label
字段和任何一个上的 text
。因此,在编写测试时让这一切变得简单实用的关键是使 StyleID(或 AutomationId)与应用中显示的文本不同。
【讨论】:
谢谢格伦。我开始意识到这一点,但很高兴得到确认。【参考方案2】:在 2.2.0 中使用 StyleId 很快就会被淘汰。
我还没有亲自测试过,但是
AutomationId 支持
Xamarin.Forms 现在对设置自动化具有一流的支持 用于 Xamarin UITest 或其他测试框架的标识符。 简单地设置 AutomationID 属性应该允许自动化 框架来查找控件并与之交互。
不确定 AutomationId 转换为什么,希望是 ID。
【讨论】:
感谢亚当,好消息。我希望它运行良好,因为我们要编写大量 UI 测试。 刚刚玩了 2.2.04-pre2 和新的 AutomationId 属性。不幸的是,它仍然将其输出为标签,而不是 id 很高兴看到它在上面得到确认。我正要仔细检查,但我觉得这应该是标签。以上是关于Xamarin Forms 上的 UITest 将 StyleId 写为标签而不是 ID的主要内容,如果未能解决你的问题,请参考以下文章
走进 Xamarin Test Recorder for Xamarin.Forms
如何在需要使用 Xamarin.UITest 访问 iOS 上的照片的权限对话框中点击确定按钮?