Xamarin.ios Xamarin.UITest:如何选择当前节点的下一个元素
是否有任何方法可以使用Xamarin.ios Xamarin.UITest:如何选择当前节点的下一个元素,xamarin.ios,ios-ui-automation,xamarin.uitest,Xamarin.ios,Ios Ui Automation,Xamarin.uitest,是否有任何方法可以使用Xamarin.UITest.querys.AppQuery选择当前节点的下一个元素 以下是一个REPL源: [CalabashRootView > ... > UIView] [UILabel] [UIButton] label: "arrow prev" [UIImageView] id: "arrow-prev.png" [iLobby_iOS_
Xamarin.UITest.querys.AppQuery
选择当前节点的下一个元素
以下是一个REPL源:
[CalabashRootView > ... > UIView]
[UILabel]
[UIButton] label: "arrow prev"
[UIImageView] id: "arrow-prev.png"
[iLobby_iOS_Controls_UIAnimatedButtonView]
[UILabel] label: "Tell us about yourself", text: "Tell us about yourself"
[UILabel] label: "FIRST AND LAST NAME", text: "FIRST AND LAST NAME"
[UILabel] label: "*", text: "*"
[UITextField]
[UIImageView]
[_UITextFieldContentView]
[UIAccessibilityTextFieldElement]
[UILabel] label: "COMPANY", text: "COMPANY"
[UITextField]
[UIImageView]
[_UITextFieldContentView]
[UIAccessibilityTextFieldElement]
挑战是选择UILabel旁边的UITextField元素
我正在寻找类似xPath的方法。在我的情况下,它看起来像:
//UILabel[@text='FIRST AND LAST NAME']/following::UITextField
有什么想法吗?我们的应用程序是用Xamarin.iOS编写的(没有Xamarin.Forms)。说明
使用Xamarin.UITest识别UI控件的最佳方法是为应用程序源代码中的每个控件分配唯一标识符
在Xamarin.iOS中,我们可以在应用程序的源代码中分配AccessibilityIdentifier
属性,然后使用Xamarin.UITest中的x=>x.Marked
引用它
设置AccessibilityIdentifier,Xamarin.iOS
有几种方法可以在Xamarin.iOS中设置可访问性标识器
每种方法都会得到相同的结果。使用最适合当前代码库的方法
对于本例,我将UILabel的AccessibilityIdentifier
设置为FirstAndLastNameLabel
1.故事板,Visual Studio(Mac)
2.故事板
3.编码
var firstandlastnamelab=新UILabel
{
AccessibilityIdentifier=“FirstAndLastNameLabel”
};
引用Xamarin.UITest中的唯一标识符
为每个UI控件创建唯一标识符后,我们可以在Xamarin.UITest中使用x=>x.Marked
readonly System.Func firstAndLastNameLabelQuery=x=>x.Marked(“FirstAndLastNameLabel”);
公共字符串GetFirstAndLastNameLabelText()
{
var label=app.Query(firstAndLastNameLabelQuery)?.FirstOrDefault();
返回标签?文本?字符串。空;
}
补充资料
在Xamarin.UITest中使用标记的
AccessibilityIdentifier
API
标识符可用于唯一标识使用UI自动化界面编写的脚本中的元素
你好,谢尔盖!您的应用程序使用哪种框架/语言:Xamarin.Forms、Xamarin.iOS、React Native、Swift或ObjC?嗨,布兰登!我们正在使用Xamarin。太好了!我现在就来做答案。我还更新了问题和标签,以包括Xamarin.iOS,希望这有助于将来Xamarin.iOS开发人员解决相同的问题!嗨,布兰登!当然这是最好的办法。我以为还有别的办法。无论如何谢谢你!我在这里遵循了这个模式,但似乎不起作用。也许这是当前iOS版本的问题。我在UILabel中添加了一个唯一的AccessibilityIdentifier。我可以在REPL树视图中看到id。当我在REPL中运行查询时,它会查找并返回结果。但是,在UITest中使用相同的查询不会返回任何结果。确实是个谜。当前版本的Xamarin.iOS和Xamarin.UITest没有问题。我建议打开一个新问题并发布您的代码,以便我们查看。要确认,您是说无法在Xamarin.UITest中选择下一个节点/元素吗?我很欣赏向元素添加唯一标识符的做法,也许可以使用AutomationId属性,但如果自动化测试人员没有权限更改应用程序的源代码,该怎么办?或者如果让开发人员添加相关ID有延迟?这是否意味着我必须找到一些可能需要时间的时髦的解决方法,或者干脆暂停我的测试,直到开发人员有时间添加ID?