我正在尝试使用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]
}
答案 0 :(得分:1)
这是与9月份发布的Internet Explorer补丁相关联的问题。
<强> KB2870699 强>
这会影响VS2010和VS2012。
微软发布了一个修正VS2012问题的补丁(我已经确认它已经解决了这个问题)。
目前VS2010唯一的解决方法是卸载补丁(KB2870699);但是,与任何类型的安全补丁一样,您需要仔细考虑是否可以根据您的情况进行拉动。
编辑:对我来说,这不是一个有趣的错误。我刚刚从VS2010升级到VS2012,突然间我发现我之前没有运行的CodedUI测试工作。我认为这是VS2012的一个问题,在一天中的大部分时间里我的头撞到了墙上后,我发现这是一个补丁的问题。在我的系统上安装补丁的同时,我升级到了2012年,这真是我的运气。好时光!答案 1 :(得分:1)
VS 2012实际上已更新以解决此问题
希望这有帮助!
答案 2 :(得分:0)
我的编码ui测试遇到了同样的问题。这是 VS-2012 的一个问题我想,我尝试了每次更新(安装/卸载它们和一切......)都没有用。 我尝试了 VS-2013 Ultimate ,但它确实有效。
答案 3 :(得分:-2)
您可以使用异常处理来捕获错误,同时仍然没有测试失败。
测试失败,因为在执行点击操作时,控件被隐藏。
try
{
//your code goes here
}
catch(FailedToPerformActionOnHiddenControlException e)
{
Console.WriteLine(e.Message);
}