• win10 uwp 使用 XamlTreeDump 获取 XAML 树元素内容


    本文来安利大家 XamlTreeDump 库,通过这个库可以将 XAML 树上的元素转换为 json 字符串,可以用来进行 UI 单元测试

    开始之前先通过 NuGet 工具安装 XamlTreeDump 库

    假定咱有 UI 界面代码如下

    <page x:class="WholebaycarNowawnawka.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:WholebaycarNowawnawka" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:ignorable="d" background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
      <grid>
        <textblock>欢迎访问我博客 https://blog.lindexi.com 里面有大量 UWP WPF 博客</textblock>
      </grid>
    </page>
    

    可以在后台代码使用 VisualTreeDumper.DumpTree 方法获取 json 字符串

            public MainPage()
            {
                InitializeComponent();
                Loaded += MainPage_Loaded;
            }
    
            private void MainPage_Loaded(object sender, RoutedEventArgs e)
            {
                var xaml = VisualTreeDumper.DumpTree(this, null, Array.Empty<string>(), new AttachedProperty[0]);
            }
    

    上面代码拿到的 xaml 字符串如下

    {
      "XamlType": "WholebaycarNowawnawka.MainPage",
      "Background": "#FFFFFFFF",
      "BorderBrush": null,
      "BorderThickness": "0,0,0,0",
      "Clip": null,
      "CornerRadius": "0,0,0,0",
      "FlowDirection": "LeftToRight",
      "Foreground": "#FF000000",
      "HorizontalAlignment": "Stretch",
      "Margin": "0,0,0,0",
      "Padding": "0,0,0,0",
      "RenderSize": [1200, 900],
      "VerticalAlignment": "Stretch",
      "Visibility": "Visible",
      "children": 
      [
      {
        "XamlType": "Windows.UI.Xaml.Controls.Grid",
        "Background": null,
        "BorderBrush": null,
        "BorderThickness": "0,0,0,0",
        "Clip": null,
        "CornerRadius": "0,0,0,0",
        "FlowDirection": "LeftToRight",
        "HorizontalAlignment": "Stretch",
        "Margin": "0,0,0,0",
        "Padding": "0,0,0,0",
        "RenderSize": [1200, 900],
        "VerticalAlignment": "Stretch",
        "Visibility": "Visible",
        "children": 
        [
        {
          "XamlType": "Windows.UI.Xaml.Controls.TextBlock",
          "Clip": null,
          "FlowDirection": "LeftToRight",
          "Foreground": "#FF000000",
          "HorizontalAlignment": "Stretch",
          "Margin": "0,0,0,0",
          "Padding": "0,0,0,0",
          "RenderSize": [1200, 900],
          "Text": "欢迎访问我博客 https://blog.lindexi.com 里面有大量 UWP WPF 博客",
          "VerticalAlignment": "Stretch",
          "Visibility": "Visible"
        }
        ]
      }
      ]
    }
    

    详细请看 asklar/XamlTreeDump: A UWP library to produce and compare XAML tree dumps useful for visual end-to-end testing

    本文所有代码放在 githubgitee 欢迎小伙伴访问

    博客园博客只做备份,博客发布就不再更新,如果想看最新博客,请到 https://blog.lindexi.com/

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名[林德熙](http://blog.csdn.net/lindexi_gd)(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我[联系](mailto:lindexi_gd@163.com)。
  • 相关阅读:
    Jmeter_远程启动 I
    jmeter(九)逻辑控制器
    Mysql innodb 间隙锁 (转)
    MySQL- InnoDB锁机制
    Innodb间隙锁,细节讲解(转)
    性能测试:压测中TPS上不去的几种原因分析(就是思路要说清楚)
    Redis性能调优
    Redis基础
    VMThread占CPU高基本上是JVM在频繁GC导致,原因基本上是冰法下短时间内创建了大量对象堆积造成频繁GC。
    关于Hibernate二级缓存第三方插件EHCache缓存
  • 原文地址:https://www.cnblogs.com/lindexi/p/14749655.html
Copyright © 2020-2023  润新知