谁知道使用编码的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岁。有人知道为什么吗?我找不到任何关于这方面的文档。
发布于 2012-05-09 20:26:50
正如Schaliasos在注释中提到的,您应该从删除实例属性开始。实例属性非常不可靠,特别是在像桌面这样频繁变化的情况下。
关于实例属性的更多说明...当缺少有效的搜索属性时,通常在录制中使用实例属性。因此,作为录制的最后努力,记录器会说我有20个具有相同搜索属性的控件,应该使用的控件是7。然后,第二天当你运行应用程序时,你可能添加或删除了几个桌面图标,并说你现在有22个图标。现在框架仍然在寻找控件的实例7,但昨天的7是今天的9。
如果有任何其他可用的搜索属性,您应该查找并使用这些属性,而不是instance。如果这是不可能的,寻找其他方法来实现相同的目标,也许可以尝试直接在C#中打开文件,而不是使用UI。
https://stackoverflow.com/questions/10506313
复制相似问题