使用UI Automation单击应用程序中的按钮

时间:2016-01-18 09:16:09

标签: c++ windows user-interface button ui-automation

我尝试使用UI Automation点击第三方应用程序中的简单按钮。 我初始化了IUIAutomation对象,并使用带有第三方应用程序窗口句柄的ElementFromHandle()函数检索了IUIAutomationElement。

但是我真的无法弄清楚如何使用这个IUIAutomationElement找到按钮并发出一个左键单击它。

到目前为止,这是我的代码:

void Control::clickButton()
{
    for (std::list<Window>::iterator i = mainDetector.getWindowList().begin(); i != mainDetector.getWindowList().end(); ++i)
{
    if (i->getTitle().find("PokerStars Lobby") != std::string::npos)
    {
        parentWindowHandle = (HWND)i->getHandle();
    }
}

InitializeUIAutomation(iUiAutomation);
(*iUiAutomation)->ElementFromHandle(parentWindowHandle, iUiAutomationElement);

}

希望有人可以帮助我从这里继续实际点击按钮

1 个答案:

答案 0 :(得分:-1)

你可能会发现使用TestStack.White(也可以从NuGet获得)来做这种事情更简单。它包含了很多UIAutomation,可以更轻松地编写驱动Windows应用程序的测试。

要查找目标按钮,您可以使用Windows 10 SDK中的“UIVerify”或“inspect”,以便查看桌面上所有窗口的UI自动化树。找到感兴趣的按钮后,您可以记下其AutomationId或其他属性,以用作TestStack.White的搜索命令或IUIAutomationTreeWalker实例之一的搜索参数。