我想要的是双击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组件返回。
有人能指出我如何解决这个问题吗?
答案 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)作为参数传递。至于为什么以前的方法不起作用,我恐怕无法解释。