如何获取桌面应用程序当前聚焦的元素

3

我希望自动化测试桌面应用程序(Windows 应用程序)的测试用例,需要获取当前焦点元素。请问有人可以帮助或指导我吗?

我已经尝试了 pywinauto 的 GetFocus 方法,但它只返回活动窗口的详细信息,而我需要获取焦点元素的信息。


你是指具有键盘焦点的子元素吗? - Vasily Ryabov
我想获取当前聚焦的元素,例如用户打开个人信息表单,聚焦的元素是姓名字段的文本框。现在我想获取当前聚焦的项目,即此情况下的姓名字段。我已经使用了get_focus,但它对我没有用,因为getfocus()给我窗口,我需要特定的项目/元素。 - Noman Masood
1个回答

2
目前尚未实现,但可以使用解决方法。对于“win32”后端:
import win32gui
from pywinauto.controls.hwndwrapper import HwndWrapper
keyboard_focused = HwndWrapper(win32gui.GetFocus())

针对“uia”后端(可能不适用于WPF应用程序):
import win32gui
from pywinauto.controls.uiawrapper import UIAWrapper
keyboard_focused = UIAWrapper(win32gui.GetFocus())

我已经提交了问题 #760,以后实现它。

2
win32gui.GetForegroundWindow() 给了我比 GetFocus() 更好的成功率,后者总是返回 0。此外,要安装 win32gui,您应该安装 pywin32 包(尝试使用 pip 安装 win32gui 会出现错误)。 - voxoid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接