0

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

我知道这可以使用 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 平台的基于 White 的 API (请参阅此处的自动化记事本示例

4

4 回答 4

1

我不相信你可以用 UIAutomation 做到这一点:你要求的是超出 UIAutomation 框架范围的东西。它旨在让您可以像使用鼠标和键盘一样使用代码。它并非设计为操纵 UI 状态的通用方法。

于 2011-03-15T14:19:24.813 回答
0

单击启用的按钮与故障注入技术有关,而不是应用程序的正常执行。该按钮是在应用程序的剩余生命周期中禁用还是稍后启用?如果是后者,为什么不等待启用呢?通过在 element.Current.IsEnabled 或 Wait-UIAButton cmdlet 上使用 do/while。

于 2012-04-19T14:05:59.243 回答
0

你可以直接调用Win32函数EnableWindow,就像你说的那样,它会发送一个Windows Message。

我在 UIAutomation 中寻找该功能,但没有找到。

于 2011-06-14T16:26:14.603 回答
-1

如果您使用白色

Mouse.Instance.Location = this.ClickablePoint;

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

于 2011-06-16T02:53:35.943 回答