当通过MTM执行Coded UI测试时,为什么Mouse.DoubleClick无法正常运行?

时间:2016-08-05 09:25:48

标签: wpf automated-tests coded-ui-tests mtm

我想要的是双击WPF数据网格中的一行。为实现这一点,我使用以下代码:

WpfTable invoiceList = new WpfTable(base.MainWindow);
invoiceList.SearchProperties.Add(WpfTable.PropertyNames.AutomationId, "datagridID");
invoiceList.WaitForControlReady(15000);

Mouse.DoubleClick(invoiceList.GetRow(0));

当我在我的机器上运行时,测试通过但是当我通过MTM运行相同的测试时,我收到以下错误:

  

测试方法   org.Application.Automation.TestCases.CommentsTests.VerifyExistingCommentsTest   抛出异常:   Microsoft.VisualStudio.TestTools.UITest.Extension.PlaybackFailureException:   无法执行“DoubleClick'在控制上。额外细节:   TechnologyName:' UIA' ControlType:'行' FrameworkId:' WPF' --->   System.Runtime.InteropServices.COMException:错误HRESULT E_FAIL有   已通过调用COM组件返回。

有人能指出我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果其他人遇到此问题,我将代码更改为以下内容以使其正常工作。

WpfControl row = invoiceList.GetRow(0);
row.WaitForControlReady();

Mouse.DoubleClick(new System.Drawing.Point(row.BoundingRectangle.X + row.BoundingRectangle.Width, row.BoundingRectangle.Y + row.BoundingRectangle.Height/2));

因此,我不使用双击WpfRow对象,而是使用Mouse.DoubleClick(新的System.Drawing.Point())选项并将中心点(即System.Drawing.Point)作为参数传递。至于为什么以前的方法不起作用,我恐怕无法解释。