【发布时间】:2018-08-27 13:48:38
【问题描述】:
我有一个 UWP 应用程序,我正在为 UWP 使用 CodedUI
它包含一个创建为 ListView 的报告,我需要验证此列表中的一些值。但是当我尝试使用十字准线工具将它拖到行或列表上时,应用程序一直挂起,当我成功捕获行时,我运行测试用例失败,因为 Codedui 找不到控件。
在附加的照片中,我可以捕获主页选项卡按钮和其他选项卡以及下拉菜单和其下方的按钮,但如果我将十字准线工具拖到列表上,它会一直挂起应用程序,直到我关闭它
visualstudio 为 listitem 行捕获了什么
在为主窗口运行 getchildren 然后为 listitem 控件运行 getparents 层次结构后,它们看起来像这样
【问题讨论】:
-
你能在 UI Control Map 中找到你想要的控件吗?
-
嗨 Memok,当列表视图项较少时,您是否尝试选择带有十字线的行?问题是, UITestControl 对象具有父子关系。这意味着父控件(您的列表视图)可以有许多子控件(列表视图项)。我有这样的理论,当您在列表视图项上使用十字准线时,必须筛选所有这些子项以找到您要选择的列表视图项。拥有更少的列表视图项目可能会加快速度。你能帮我验证一下吗?
-
关于找不到控件。在您的测试尝试访问其中一个孩子之前,您是否确保您的列表视图已完全加载?您可以将
UITestControl.WaitForControlExist()之类的函数用于这些目的。 -
@Milan 当我尝试使用十字准线工具突出显示该行时(10 次尝试中有 1 次成功,否则它会挂起)我在带有路径的 UI 控制映射中找到它(UIWindow.UIItemCustom.UIItemList. UIItem201807052049SECTListItem)。 UIItem201807052049SECTListItem 是行 ID,它是动态 ID 所以我尝试调试以检查父 UIItemList.exist 是否为真并使用 GetChildren() 但我发现它是假的。
-
嗨 @PixelPlex ,是的,我尝试在列表中仅选择 2 行,并且每当我将十字准线拖过一个单元格时,它仍然会挂起相同的行为。正如我在之前的评论中提到的,当我很幸运地捕捉到我尝试了 parent 和 grand parent.exist 的行时,我添加了 Playback.Wait(4000);确保它在没有等待失败问题的情况下被加载。报表由xaml StackLayout->Grid->Listview->Grid完成
标签: uwp automated-tests coded-ui-tests