无法对隐藏的控件异常执行操作

时间:2013-10-18 05:38:30

标签: c# asp.net visual-studio-2010 testing coded-ui-tests

我正在尝试使用IE 9在IE 8兼容模式下在VS 2010中创建UI测试,但是当尝试记录操作记录时,许多步骤都失败了。然后,当我手动编写缺少的步骤并尝试使用用户名和密码填写登录表单时,我得到一个异常,说我无法对隐藏控件执行操作。

UI测试代码:

public void Recordedmethod()
{
        BrowserWindow uILogInWindowsInternetWindow = this.UILogInWindowsInternetWindow;
        HtmlHyperlink uILogInHyperlink = this.UILogInWindowsInternetWindow.UIHomePageDocument.UILogInHyperlink;
        HtmlEdit uIUsernameEdit = this.UILogInWindowsInternetWindow.UILogInDocument1.UIUsernameEdit;
        HtmlEdit uIPasswordEdit = this.UILogInWindowsInternetWindow.UILogInDocument1.UIPasswordEdit;
        #endregion

        // Go to web page 'http://localhost:15856/WebSite1/'
        uILogInWindowsInternetWindow.NavigateToUrl(new System.Uri(this.RecordedMethodParams.UILogInWindowsInternetWindowUrl));

        // Set flag to allow play back to continue if non-essential actions fail. (For example, if a mouse hover action fails.)
        Playback.PlaybackSettings.ContinueOnError = true;

        // Mouse hover 'Log In' link at (1, 1)
        Mouse.Click(uILogInHyperlink);

        // Reset flag to ensure that play back stops if there is an error.
        Playback.PlaybackSettings.ContinueOnError = false;

        // Type 'test' in 'Username:' text box
        uIUsernameEdit.Text = this.RecordedMethodParams.UIUsernameEditText;

        // The following element is no longer available: IE web control; Process Id [6320], window handle [3168166]

        // Type '********' in 'Password:' text box
        uIPasswordEdit.Password = this.RecordedMethodParams.UIPasswordEditPassword;

        // The following element is no longer available: IE web control; Process Id [6320], window handle [3168166]
}

4 个答案:

答案 0 :(得分:1)

这是与9月份发布的Internet Explorer补丁相关联的问题。

<强> KB2870699

这会影响VS2010和VS2012。

微软发布了一个修正VS2012问题的补丁(我已经确认它已经解决了这个问题)。

http://blogs.msdn.com/b/visualstudioalm/archive/2013/09/17/coded-ui-mtm-issues-on-internet-explorer-with-kb2870699.aspx

目前VS2010唯一的解决方法是卸载补丁(KB2870699);但是,与任何类型的安全补丁一样,您需要仔细考虑是否可以根据您的情况进行拉动。

编辑:对我来说,这不是一个有趣的错误。我刚刚从VS2010升级到VS2012,突然间我发现我之前没有运行的CodedUI测试工作。我认为这是VS2012的一个问题,在一天中的大部分时间里我的头撞到了墙上后,我发现这是一个补丁的问题。在我的系统上安装补丁的同时,我升级到了2012年,这真是我的运气。好时光!

答案 1 :(得分:1)

答案 2 :(得分:0)

我的编码ui测试遇到了同样的问题。这是 VS-2012 的一个问题我想,我尝试了每次更新(安装/卸载它们和一切......)都没有用。 我尝试了 VS-2013 Ultimate ,但它确实有效。

答案 3 :(得分:-2)

您可以使用异常处理来捕获错误,同时仍然没有测试失败。

测试失败,因为在执行点击操作时,控件被隐藏。

try 
{
   //your code goes here
}
catch(FailedToPerformActionOnHiddenControlException e)
{
   Console.WriteLine(e.Message);
}