0

任何人都知道使用编码的 UI 测试 API 可靠地定位桌面图标的正确方法吗?通过单击特定桌面图标的录制操作创建的自动生成代码在录制当天就可以使用。第二天打开笔记本电脑时,录制操作不再起作用,因为找不到图标。

我正在尝试手工制作,所以我尝试了:

public void LaunchOi()
{
   var desktop = ApplicationUnderTest.Desktop.GetChildren().First(c => c.Name == "Desktop");

   var folderView = new WinWindow(desktop);

   // I copied these numbers from autogenerated code.  
   // Yesterday, PropertyNames.Instance = 7, today = 9.  Why so?
   folderView.SearchProperties[WinWindow.PropertyNames.ControlId] = "1";
   folderView.SearchProperties[WinWindow.PropertyNames.Instance] = "9";
   folderView.Find();

   var winList = new WinListItem(folderView);
   winList.SearchProperties[WinListItem.PropertyNames.Name] = "OCC600 OI";          
   winList.Find();

   Mouse.DoubleClick(winList, MouseButtons.Left);
}

正如我的评论中所指出的,WinWindow.PropertyNames.Instance不会保持不变。昨天录的时候WinWindow.PropertyNames.Instance是7点,今天是9点。有人知道为什么吗?我找不到任何关于此的文档。

4

1 回答 1

1

正如 Schaliasos 在评论中提到的,您应该从删除实例属性开始。实例属性非常不可靠,尤其是在与桌面一样频繁更改的情况下。

关于实例属性的更多解释......当缺少有效的搜索属性时,通常会在录制中使用实例属性。因此,作为录制的最后努力,录制器会说我有 20 个具有相同搜索属性的控件,并且应该使用的控件是编号 7。然后第二天当您运行您可能添加或添加的应用程序时删除了几个桌面图标,并说你现在有 22 个图标。现在框架仍在寻找控件的实例 7,但昨天的 7 是今天的 9。

如果有任何其他可用的搜索属性,您应该找到并使用它们而不是实例。如果这不可能,请寻找其他方法来实现相同的目标,也许可以尝试直接在 C# 中打开文件,而不是使用 UI。

于 2012-05-09T12:26:49.600 回答