我正在使用Coded UI测试一些Windows应用商店应用。 在我的情况下,我应该通过打开文件对话框打开一些文件。 我为主页面和打开窗口创建UI地图。 OpenWindowMap和 Control was added normally 看起来很正常,直到我的程序试图找到List项来选择文件。
这是我尝试查找List项控件的代码的一部分。
Gesture.Tap(MainMap.UIAppUnderTest.UIPlusPopupWindow.UIItemMenu.UIOpenfileMenuItem);
OpenWindowMap.OpenWindow.WaitForControlExist();
Gesture.Tap(OpenWindowMap.OpenWindow.TopItemsPane.ChooseFolderPane);
Keyboard.SendKeys(Classes.Core.TestDirPath);
Keyboard.SendKeys("{ENTER}");
Gesture.Tap(OpenWindowMap.OpenWindow.UIItemsViewList.UI0ListItem);
在上一次原始我得到这样的例子:
Test method AppUnderTestCUIT.Tests.PlaylistTest1.PlaylistFormatsTest threw exception:
Microsoft.VisualStudio.TestTools.UITest.Extension.UITestControlNotFoundException:
The playback failed to find the control with the given search
properties.
Additional Details:
TechnologyName: 'UIA'
FrameworkId: 'DirectUI'
AutomationId: '0'
--->
System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component.
有人有想法吗?
答案 0 :(得分:0)
你可以从UIMap编辑器找到你的控件吗? Visual Studio找到它们吗?我在你的代码中没有看到你试图找到控件。您只需等待Locate Control
设置中指定的默认时间,然后继续执行操作。如果在UI上找不到控件,则会从上面获得例外。
尝试使用AutomationID
选项从UIMap编辑器中查找控件。
您的搜索属性包含有关控件的一些详细信息。这可能是个问题。特别是您的AutomationID
通常不应该是' 0'。如果是' 0',请让您的开发团队为您提供一些相同且有意义的{{1}}。
欢呼声, 亚历
答案 1 :(得分:0)
我遇到了同样的问题,我很惊讶MS Coded UI无法与MS Windows文件浏览器良好地交互。
最后,我在窗口底部的“文件名:”文本框中单击鼠标。这是在这个窗口上与Coded UI一起工作的少数事情之一。然后我选择Generate Code,命名为“Common_Filebrowser_Filename”。
然后我打开了“UIMap.uitest”,找到了我的方法“Common_Filebrowser_Filename”,右键单击并选择“将代码移动到UIMap.cs”。我不知道你是否熟悉这个选项。如果你不这样做,那么当你录制下一个测试时,你所做的代码改变会被覆盖!
最后,我编写了下面的代码,你可以看到我在评论之间的自定义代码......
[TestMethod()]
public void FindFile()
{
this.UIMap.Common_Filebrowser_Filename();
//Custom code to find file....
//Enter Directory
String directory = "C:\\myDir\\testFiles";
foreach (char c in directory)
{
Keyboard.SendKeys(c.ToString());
}
//Enter filename
String file = "\\myTestFile";
foreach (char c in file)
{
Keyboard.SendKeys(c.ToString());
}
//End of custom code to find file
}
免责声明:我使用的是Windows 10(最新版本),VS2017(最新版)。我还没有尝试过,如果我正在运行文件浏览器购买文件扩展名的地方,我是否需要更改我的测试方法以包含文件扩展名。在我的情况下,扩展是隐藏的,我不知道显示文件扩展名是否会使我的测试混淆。
我还自由地承认,文件名前面的2个反斜杠应该位于目录的末尾,而不是文件的开头,但是没有测试过这个更改。
您必须录制自己的测试才能单击“文件浏览器”窗口右下角的“打开”按钮。
我希望这会有所帮助。