python UI自动化框架无法看到Windows桌面上的元素

nszi6y05  于 2023-05-27  发布在  Python
关注(0)|答案(1)|浏览(285)

在克隆和启动虚拟机快照后,从桌面访问元素时出现问题。当捕获处于上述状态的VM时,使用pywinauto会导致一个看起来像这样的树:

Pane - 'Program Manager'    (L0, T0, R1920, B1200)
['Program ManagerPane', 'Program Manager', 'Pane']
child_window(title="Program Manager", control_type="Pane")
   | 
   | ListBox - 'Desktop'    (L0, T0, R1920, B1200)
   | ['Desktop', 'DesktopListBox', 'ListBox']
   | child_window(title="Desktop", auto_id="1", control_type="List")
   |    | 
   |    | ListItem - ''    (L0, T0, R0, B0)
   |    | ['ListItem', 'ListItem0', 'ListItem1']
   |    | 
   |    | ListItem - ''    (L0, T0, R0, B0)
   |    | ['ListItem2']
   |    | 
   |    | ListItem - ''    (L0, T0, R0, B0)
   |    | ['ListItem3']
   |    | 
   |    | ListItem - ''    (L0, T0, R0, B0)
   |    | ['ListItem4']
   |    | 
   |    | ListItem - ''    (L0, T0, R0, B0)
   |    | ['ListItem5']
   |    | 
   |    | ListItem - ''    (L0, T0, R0, B0)
   |    | ['ListItem6']
   |    | 
   |    | ListItem - ''    (L0, T0, R0, B0)
   |    | ['ListItem7']`

使用带有UIA 2模式或Nexial的FlaUInspect,我可以从桌面获取元素的路径

/Pane[@Name='Program Manager']/List[@Name='Desktop']/ListItem[@Name='Folder_with_app_installer']

但是,使用RobotFramework-FlaUIlibrary中的路径只会导致一个错误提示,即未找到元素。Pywinauto会导致同样的错误。
在我们的测试自动化中,我们通常使用虚拟机上的管理员帐户安装软件,然后重新登录到用户并启动软件。我试图保存时间,跳过重新登录,并安装所有测试的软件下的用户帐户。通过这一努力,我发现了上述问题。对我来说最奇怪的是,如果我将安装保持在Admin下,通过PowerShell启动安装程序,通过安装对话框“点击”并重新登录到User,则可以访问Desktop中的所有元素。我尝试在我的套件开始时添加2个虚拟测试用例-重新登录到管理员,重新登录到用户,(并在用户下安装软件),但即使在此之后,桌面元素也无法访问。
你知道是什么导致了这种行为吗?

qacovj5a

qacovj5a1#

问题解决了元素“不可见”的原因在于启动测试套件的用户。我们从管理员控制台运行测试,该控制台无法访问用户桌面上的元素。这个解决方案非常简单--当有必要的时候,我在管理员/用户控制台(我想要的)下重新启动测试套件,只使用未测试的测试用例。
我希望这能对某人有所帮助。

相关问题