我正在尝试通过UIAutomation
为我们的项目实施自动化测试。但是很多控件都不是标准的,并且对于那些控件也没有实现正确的模式。在这种情况下,如何通过 UIAutomation framework 操作控件?
例如,我们产品中的按钮是通过窗格实现的,调用的模式也没有实现。我该如何点击按钮? (为了避免在测试机器上安装VS,我不想在Mouse.Click()
命名空间中使用Microsoft.VisiualStudio.TestTools.UITesting
)有没有办法只使用UIAutomation框架或嵌入在.net框架中的其他东西?提前致谢! (如果实现了正确的模式,下面的代码将起作用。作为新用户,我无法发布截图供您参考,抱歉!)
object temp = null;
if (btnTest.TryGetCurrentPattern(InvokePattern.Pattern, out temp))
{
InvokePattern btnTestPattern = temp as InvokePattern;
btnTestPattern.Invoke();
}
答案 0 :(得分:1)
最好的事情是,如果那些实施该系统的人会implement server-side UIA provider to their UI Elements!
但通常这是不可能的......,我使用了以下解决方法(至少用于点击/切换):
AutomationElement yourAE = ...// some code to find the right AutomationElement (AE)
clickablePoint = yourAE.GetClickablePoint();
还可以使用BoundingRectangleProperty
如果您收到该可点击点,则可以使用
System.Windows.Forms.Cursor.Position = new System.Drawing.Point((int)clickablePoint.X, (int)clickablePoint.Y);
移动到该位置,然后通过InputSimulator或某些win32(user32.dll)命令单击它。 (注意:当然你也可以使用InputSimulator或win32来移动鼠标 - 但是当涉及到具有不同位置或分辨率的多个屏幕时,我对InputSimulator有一些问题 - 所以Cursor.Position是最简单的方法,也非常可靠)
答案 1 :(得分:1)
在未实现控件模式时进行交互的唯一方法是单击周围的东西。 我建议尝试按照以避免最大错误。