代码之家  ›  专栏  ›  技术社区  ›  Murilo lima alves

C#测试堆栈。白色-获取窗口。最小化窗口中的项目正确

  •  1
  • Murilo lima alves  · 技术社区  · 9 年前

    我当前正在使用 TestStack.White 从外部检索信息的框架 Window .

    窗口.DisplayState 恢复 最大化 ,我可以完美地得到我想要的东西……但当它是 最小化 ,我无法从窗口中看到每个项目…以下示例显示了使用中的命令的Google Chrome项目 Visual Studio 即时窗口 :

    最大化窗口:

    Window.DisplayState (COMMAND)
    Maximized
    Window.Items (COMMAND)
    
    Count = 35
    [0]: {Panel. AutomationId:183101736, Name:Chrome Legacy Window, ControlType:painel, FrameworkId:Win32}
    [1]: {MenuBar. AutomationId:SystemMenuBar, Name:Barra de menus do sistema, ControlType:barra de menus, FrameworkId:Win32}
    [2]: {Button. AutomationId:Minimize, Name:Minimizar, ControlType:botão, FrameworkId:Win32}
    [3]: {Button. AutomationId:Restore, Name:Restaurar, ControlType:botão, FrameworkId:Win32}
    [4]: {Button. AutomationId:Close, Name:Fechar, ControlType:botão, FrameworkId:Win32}
    [5]: {CustomUIItem. AutomationId:, Name:Google Chrome, ControlType:personalizado, FrameworkId:}
    [6]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [7]: {Button. AutomationId:, Name:Murilo, ControlType:botão, FrameworkId:}
    [8]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [9]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [10]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [11]: {Tab. AutomationId:, Name:, ControlType:guia, FrameworkId:}
    [12]: {Button. AutomationId:, Name:Nova guia, ControlType:botão, FrameworkId:}
    [13]: {Button. AutomationId:, Name:Fechar, ControlType:botão, FrameworkId:}
    [14]: {Button. AutomationId:, Name:Fechar, ControlType:botão, FrameworkId:}
    [15]: {Button. AutomationId:, Name:Fechar, ControlType:botão, FrameworkId:}
    [16]: {Button. AutomationId:, Name:Fechar, ControlType:botão, FrameworkId:}
    [17]: {Button. AutomationId:, Name:Fechar, ControlType:botão, FrameworkId:}
    [18]: {Button. AutomationId:, Name:Fechar, ControlType:botão, FrameworkId:}
    [19]: {Button. AutomationId:, Name:Fechar, ControlType:botão, FrameworkId:}
    [20]: {Button. AutomationId:, Name:Fechar, ControlType:botão, FrameworkId:}
    [21]: {ToolStrip. AutomationId:, Name:main, ControlType:barra de ferramentas, FrameworkId:}
    [22]: {Button. AutomationId:, Name:Recarregar, ControlType:botão, FrameworkId:}
    [23]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [24]: {Button. AutomationId:, Name:Adicionar esta página aos favoritos, ControlType:botão, FrameworkId:}
    [25]: {CustomUIItem. AutomationId:, Name:Extensões, ControlType:personalizado, FrameworkId:}
    [26]: {Button. AutomationId:, Name:AdBlock - clique para detalhes, ControlType:botão, FrameworkId:}
    [27]: {Button. AutomationId:, Name:Tampermonkey, ControlType:botão, FrameworkId:}
    [28]: {ToolStrip. AutomationId:, Name:Favoritos, ControlType:barra de ferramentas, FrameworkId:}
    [29]: {Button. AutomationId:, Name:AAA, ControlType:botão, FrameworkId:}
    [30]: {Button. AutomationId:, Name:BBB, ControlType:botão, FrameworkId:}
    [31]: {Button. AutomationId:, Name:CCC, ControlType:botão, FrameworkId:}
    [32]: {Button. AutomationId:, Name:DDD, ControlType:botão, FrameworkId:}
    [33]: {Button. AutomationId:, Name:EEE, ControlType:botão, FrameworkId:}
    [34]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    

    最小化窗口:

    Window.DisplayState (COMMAND)
    Minimized
    Window.Items (COMMAND)
    
    Count = 19
    [0]: {MenuBar. AutomationId:SystemMenuBar, Name:Barra de menus do sistema, ControlType:barra de menus, FrameworkId:Win32}
    [1]: {Button. AutomationId:Restore, Name:Restaurar, ControlType:botão, FrameworkId:Win32}
    [2]: {Button. AutomationId:Maximize, Name:Maximizar, ControlType:botão, FrameworkId:Win32}
    [3]: {Button. AutomationId:Close, Name:Fechar, ControlType:botão, FrameworkId:Win32}
    [4]: {CustomUIItem. AutomationId:, Name:Google Chrome, ControlType:personalizado, FrameworkId:}
    [5]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [6]: {Button. AutomationId:, Name:Murilo, ControlType:botão, FrameworkId:}
    [7]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [8]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [9]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [10]: {Tab. AutomationId:, Name:, ControlType:guia, FrameworkId:}
    [11]: {Button. AutomationId:, Name:Nova guia, ControlType:botão, FrameworkId:}
    [12]: {ToolStrip. AutomationId:, Name:main, ControlType:barra de ferramentas, FrameworkId:}
    [13]: {Button. AutomationId:, Name:Recarregar, ControlType:botão, FrameworkId:}
    [14]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    [15]: {Button. AutomationId:, Name:Adicionar esta página aos favoritos, ControlType:botão, FrameworkId:}
    [16]: {CustomUIItem. AutomationId:, Name:Extensões, ControlType:personalizado, FrameworkId:}
    [17]: {ToolStrip. AutomationId:, Name:Favoritos, ControlType:barra de ferramentas, FrameworkId:}
    [18]: {CustomUIItem. AutomationId:, Name:, ControlType:personalizado, FrameworkId:}
    

    正如你们所看到的,当 最大化 同时 最小化 只显示了18个项目。

    如果我想要 Panel 183101736(第一位置 最大化 ),可以使用以下代码轻松获取:

    TestStack.White.UIItems.Panel panel = Window.Get<TestStack.White.UIItems.Panel>(SearchCriteria.ByAutomationId("183101736"));
    

    如果 最小化 ,我必须使用手动更改其状态 窗DisplayState=显示状态。最大化 …否则,将引发以下问题 Exception 。有没有一种方法可以在不强制 要打开吗?

    AutomationException

    1 回复  |  直到 4 年前
        1
  •  1
  •   RuNe    6 年前

    我认为UIItem只有在呈现时才存在。无法呈现最小化窗口,因此找不到UIItem。 要获取“项目”,窗口需要处于活动状态,而不是最小化,并位于前景中。

    下面是关于最后一部分的问题: Is there any way to activate a window with White?

    这本质上就像使用这些现代的javascript页面进行WebScraping一样,您无法删除尚未加载到dom中的内容。与rest服务(或用于windows自动化的适当的ipc)相反,它处理呈现的界面,“模拟”人类用户,并且仅限于他将呈现的项目。