编码的UI在异常&#34上失败;另一个控件阻止控件。请使阻止的控件可见...."在对话框窗口上

时间:2015-03-22 03:03:06

标签: c# coded-ui-tests vstest

我似乎无法通过我的编码UI项目获取此窗口对话框的异常。我尝试过使用始终搜索和其他一些选项。我试图使用打开一个窗口对话框按钮的选项,但似乎没有工作,因为我没有看到打开按钮只有“确定”和一些不属于我试图做的事情。

我看到我的一个窗口正在返回5个窗口,我正在尝试使用代码Order Of overcation,但这似乎不起作用。

目前这是我的最新代码,但仍然没有工作,仍然给我相同的异常错误

   WinWindow myDialogBox = new WinWindow();
        myDialogBox.FilterProperties.Add(WinWindow.PropertyNames.OrderOfInvocation, "5");
        myDialogBox.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
        myDialogBox.SearchProperties[WinWindow.PropertyNames.ClassName] = "DirectUIHWND";
        myDialogBox.SearchProperties[WinWindow.PropertyNames.ControlId] = "0";

        myDialogBox.DrawHighlight();


        WinWindow MyOpbenButton = new WinWindow(myDialogBox);
     //   myDialogBox.SearchProperties.Add(WinWindow.PropertyNames.OrderOfInvocation, "0");
        MyOpbenButton.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
        MyOpbenButton.SearchProperties[WinWindow.PropertyNames.Name] = "&Open";
        MyOpbenButton.SearchProperties[WinWindow.PropertyNames.ClassName] = "Button";
        //MyOpbenButton.SearchProperties[WinWindow.PropertyNames.ControlId] = "0";
        MyOpbenButton.DrawHighlight();


        //Testing this window produces 5 window with the same name and 
        control ID.  

        WinWindow matchingWindows = new WinWindow(myDialogBox);

       matchingWindows.SearchProperties.Add("Name", "&Open");

      //  matchingWindows.SearchProperties.Add("ControlId", "0");
       matchingWindows.SearchProperties.Add("ClassName", "Button");



        UITestControlCollection windowsFound = matchingWindows.FindMatchingControls();




        WinPane MyOpbenPane = new WinPane(MyOpbenButton);
        MyOpbenPane.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
        //MyOpbenPane.SearchProperties[WinPane.PropertyNames.Name] = "Open";
        MyOpbenPane.SearchProperties[WinPane.PropertyNames.ClassName] = "Button";
        // var myDialog = sharedControls.UIWindowsInternetExploWindow.UIWindowsInternetExplo_Open_Save_Dialog_LinksPage.UIItemWindow;           
        MyOpbenPane.DrawHighlight();
        return MyOpbenPane;

这产生的错误消息如下:

  

另一个控件是阻止控件。请阻止   控制可见并重试该操作。额外细节:   \ r \ nTechnologyName:'MSAA'\ r \ n名称:'&打开'\ r \ n \ nClassName:   'Button'\ r \ nControlType:'Window'\ r \ n

2 个答案:

答案 0 :(得分:0)

我使用测试构建器解决了这个问题。

我发现对话框屏幕正在被捕获 classname为32770.我还发现我无法将浏览器窗口从窗口传递到窗口,我使用测试构建器手动编码剩余的屏幕。

这是下面的代码。

  WinWindow window = new WinWindow();
        window.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
        window.SearchConfigurations.Add(SearchConfiguration.VisibleOnly);
        window.SearchProperties[WinWindow.PropertyNames.ClassName] = "#32770";
        window.SearchProperties[WinWindow.PropertyNames.Name] = "Windows Internet Explorer";
        window.WindowTitles.Add("Windows Internet Explorer");

        //window.DrawHighlight();

        WinCustom myDialogBox = new WinCustom(window);
        myDialogBox.SearchConfigurations.Add(SearchConfiguration.VisibleOnly);
        myDialogBox.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
        myDialogBox.SearchProperties[WinCustom.PropertyNames.ControlType] = "Dialog";
        myDialogBox.SearchProperties[WinCustom.PropertyNames.Name] = "Windows Internet Explorer";
        myDialogBox.WindowTitles.Add("Windows Internet Explorer");
        //myDialogBox.DrawHighlight();

        WinWindow myDialogwindow = new WinWindow(window);
        myDialogwindow.SearchConfigurations.Add(SearchConfiguration.VisibleOnly);
        myDialogwindow.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
        myDialogwindow.SearchProperties[WinWindow.PropertyNames.AccessibleName] = "Windows Internet Explorer";
        myDialogwindow.SearchProperties[WinWindow.PropertyNames.ClassName] = "DirectUIHWND";
        myDialogwindow.WindowTitles.Add("Windows Internet Explorer");

        return myDialogwindow;

答案 1 :(得分:0)

我遇到了很多。我有一个应用程序,标签总是被报告为隐藏,即使它们清晰可见。到目前为止,对我来说效果很好的方法是使用keyboard.sendkeys发送选择标签的击键。