pywinauto在virtualbox下的混合后端应用程序中找不到Win32元素

时间:2019-07-10 13:12:23

标签: winapi virtualbox win32gui pywinauto

如果脚本在virtualbox中运行,pywinauto找不到作为aui后端元素的子级的win32后端元素

我们有一个正在调用的WinForm ComboBox弹出其中有Win32 ComboLBox的{​​{1}}。在本地计算机上使用pywinauto默认方法时 如果脚本在virtualbox中运行,则pywinauto找不到作为aui后端元素的子级的win32后端元素

我们有一个正在调用的ListItems弹出其中有WinForm ComboBox的{​​{1}}。在本地计算机上使用pywinauto默认方法时

Win32 ComboLBox

它工作得很好。在virtualbox VM(Microsoft网站上的Win10(x64)上的MSEdge)上使用相同的代码时,pywinauto无法看到ListItems对象下的项目。 检查列出它们,app.Dialog.ComboLBox.select('myitem') 返回字符串列表,但是ComboLBox为空。

对于这种情况是否有任何解决方法?如今,随着所有人都转向虚拟机和云计算,我很难想象直接在桌面上使用自动化工具的情况。

1 个答案:

答案 0 :(得分:0)

WinForms组合框的子级至少展开一次之前可能未列出。在Inspect.exe中应该看起来一样。 .texts()方法使用另一种方法来获得子代。还有一种方法.select(“ ...”)在两种情况下都可以正常工作。如果您严格需要孩子列表,只需在.children()之前执行.expand()。collapse()。

当然,这与VirtualBox或任何特定于云的事物无关。您很幸运可以在特定版本的.NET Runtime上找到它。