我在标准MFC应用程序上记录拖动操作。在录制之前,我制作了一个可停靠的窗格(如类视图,文件视图)。然后用鼠标拖动它并通过编码的UI构建器记录它。下面是编码的UI构建器生成的代码。我使用的是VS 2012 Ultimate版本。
public void RecordedMethod29()
{
#region Variable Declarations
WinClient uIClassViewClient = this.UIClassViewWindow.UIClassViewClient;
#endregion
// Move 'Class View' client
//System parameter 'Show window contents while dragging' is not set.This could lead to incorrect recording of drag actions.
Mouse.StartDragging(uIClassViewClient, new Point(120, -11));
Mouse.StopDragging(uIClassViewClient, 19, -17);
}
但是,在重放期间,VS会提高误差。我认为关键信息是"无法执行'拖动'在控制"。有人遇到过这样的问题吗?我不相信编码的UI测试不能在浮动窗口上记录/重放拖动操作。顺便说一句,我还启用了Windows设置"显示窗口内容,同时拖动"在代码注释中提到:"系统参数'拖动时显示窗口内容'未设置。这可能导致拖动操作的错误记录。" 但错误仍然存在。
测试名称:CodedUITestMethod1 测试FullName:CodedUITestProject1.CodedUITest1.CodedUITestMethod1 测试源:c:\ Users \ Administrator \ Documents \ Visual Studio 2012 \ Projects \ MFCApplication3 \ CodedUITestProject1 \ CodedUITest1.cs:第27行 测试结果:失败 测试时间:0:00:01.2473599
结果讯息:
测试方法CodedUITestProject1.CodedUITest1.CodedUITestMethod1抛出异常:
Microsoft.VisualStudio.TestTools.UITest.Extension.PlaybackFailureException:无法执行'拖动'在控制上。额外细节:
TechnologyName:' MSAA'
姓名:'课堂视图'
ControlType:'客户'
---> System.Runtime.InteropServices.COMException:对COM组件的调用返回了错误HRESULT E_FAIL。
结果StackTrace:
在Microsoft.VisualStudio.TestTools.UITest.Playback.Engine.IScreenElement.EnsureVisible(Int32 nEnsureVisibleFlag,Int32 x,Int32 y,IScrollerCallback pScrollerCallback,Int32 nScrollFlag,Int32 nMaximumContainers)
在Microsoft.VisualStudio.TestTools.UITesting.UITestControl.StartDragging(Point relativeCoordinate,MouseButtons按钮,ModifierKeys modifierKeys)
---内部异常堆栈跟踪结束---
在Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowComException(COMException innerException,IPlaybackContext context)
在Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowException(SystemException异常,IPlaybackContext上下文)
在Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowException(SystemException异常,String actionName,UITestControl uiControl)
在Microsoft.VisualStudio.TestTools.UITesting.UITestControl.StartDragging(Point relativeCoordinate,MouseButtons按钮,ModifierKeys modifierKeys)
在Microsoft.VisualStudio.TestTools.UITesting.UITestActionExecutorCore.StartDragging(UITestControl控件,MouseButtons按钮,ModifierKeys modifierKeys,Point relativeCoordinate)
在Microsoft.VisualStudio.TestTools.UITesting.Mouse.StartDraggingImplementation(UITestControl控件,MouseButtons按钮,ModifierKeys modifierKeys,Point relativeCoordinate)
在Microsoft.VisualStudio.TestTools.UITesting.Mouse。<> c__DisplayClass15.b__14()
在Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod [T](Func`1函数,UITestControl控件,Boolean firePlaybackErrorEvent,Boolean logAsAction)
在Microsoft.VisualStudio.TestTools.UITesting.Mouse.StartDragging(UITestControl控件,Point relativeCoordinate,MouseButtons按钮,ModifierKeys modifierKeys)
在Microsoft.VisualStudio.TestTools.UITesting.Mouse.StartDragging(UITestControl控件,Point relativeCoordinate)
在CodedUITestProject1.UIMap.RecordedMethod30()位置c:\ Users \ Administrator \ Documents \ Visual Studio 2012 \ Projects \ MFCApplication3 \ CodedUITestProject1 \ UIMap.Designer.cs:行号657
在CodedUITestProject1.CodedUITest1.CodedUITestMethod1()位置c:\ Users \ Administrator \ Documents \ Visual Studio 2012 \ Projects \ MFCApplication3 \ CodedUITestProject1 \ CodedUITest1.cs:行号29