我正在尝试自动化安装向导,我需要点击未启用的按钮。
我知道这可以使用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)
答案 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。