如何使用UIAutomation或White启用按钮

时间:2011-03-15 12:36:41

标签: c# ui-automation white

我正在尝试自动化安装向导,我需要点击未启用的按钮。

我知道这可以使用Windows消息完成,但我想知道是否已经支持White或UIAutomation

作为参考,这不起作用:

var invoke =  (System.Windows.Automation.InvokePattern)setup.button("Next >").AutomationElement.GetCurrentPattern(System.Windows.Automation.InvokePattern.Pattern);  
invoke.Invoke();

这两个

var guiAutomation = new API_GuiAutomation("msiexec");  
var setup = guiAutomation.windows()[0]; 
setup .bringToFront(); 
setup .button("Next >").mouse().click();  // this will work
setup .button("Next >").mouse().click();  // this will not work since the button is not enabled

上面的示例使用我添加到O2 Platform的基于白色的API(请参阅此处example of automating notepad

4 个答案:

答案 0 :(得分:1)

我不相信你能用UIAutomation做到这一点:你所要求的是超出UIAutomation框架的范围。它旨在让您使用与鼠标和键盘相同的代码。它不是设计为操纵UI状态的一般方法。

答案 1 :(得分:0)

您可以直接调用Win32函数EnableWindow,它发送Windows消息,就像您说的那样。

我在UIAutomation中查找了该功能,但未找到它。

答案 2 :(得分:0)

如果您使用白色

Mouse.Instance.Location = this.ClickablePoint;

Mouse.LeftDown(); Mouse.Instance.Location = point; Mouse.LeftUp();

答案 3 :(得分:0)

单击启用的按钮更快地与故障注入技术相关,而不是正常执行应用程序。 此按钮是否在应用程序的生命周期的其余部分禁用,或者稍后将启用?如果是后者,为什么不等待启用?在element.Current.IsEnabled或Wait-UIAButton cmdlet上使用do / while。