在Windows Phone的编码UI中获取矩形的填充颜色

时间:2016-02-03 22:03:22

标签: c# xaml windows-phone-8 coded-ui-tests

我正在为一个简单的应用程序编写一些Coded UI测试,似乎无法获得查找Rectangle对象的代码。在特定情况下,我有矩形的颜色显示两个字符串是否匹配,基于填充颜色。

当使用Coded UI Test Builder尝试查找矩形时,正在找到父对象而不是矩形。我也看到代码返回,当我手动搜索时,它无法找到矩形。

以下是我要测试的页面的XAML:

<Page
x:Class="TestApp.ButtonTester"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestApp"
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 x:Name="LayoutRoot">

    <Grid.ChildrenTransitions>
        <TransitionCollection>
            <EntranceThemeTransition/>
        </TransitionCollection>
    </Grid.ChildrenTransitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!-- Title Panel -->
    <StackPanel Grid.Row="0" Margin="19,0,0,0">
        <TextBlock Text="{StaticResource AppName}" Style="{ThemeResource TitleTextBlockStyle}" Margin="0,12,0,0"/>
        <TextBlock Name="pageTitle" Text="Button Tester" Margin="0,-6.5,0,26.5" Style="{ThemeResource HeaderTextBlockStyle}" CharacterSpacing="{ThemeResource PivotHeaderItemCharacterSpacing}"/>
    </StackPanel>

    <!--TODO: Content should be placed within the following grid-->
    <Grid Grid.Row="1" x:Name="ContentRoot" Margin="19,9.5,19,0">
        <StackPanel Name="buttonValidator">
            <TextBlock Name="verifyText" Text="Hi" HorizontalAlignment="Center" Style="{StaticResource LargeText}"/>
            <Button Name="changeText" Content="Change Text" HorizontalAlignment="Center" Click="changeText_Click"/>
            <TextBox Name="guessText" Text="Enter Text From Above" TextAlignment="Center" GotFocus="guessText_GotFocus" KeyDown="guessText_KeyDown"/>
            <Button Name="verifyMatch" Content="Verify" HorizontalAlignment="Center" Click="verifyMatch_Click"/>
            <Rectangle Name="matchAlert" Height="50" Width="50" Fill="Black" HorizontalAlignment="Center"/>
        </StackPanel>
    </Grid>
</Grid>

以下是我目前的测试代码:

[TestMethod]
    public void TestVerifyIncorrect()
    {
        UITestControl verifyMatch = new UITestControl(myApp);
        verifyMatch.TechnologyName = "UIA";

        verifyMatch.SearchProperties.Add("ControlType", "Button");
        verifyMatch.SearchProperties.Add("AutomationId", "verifyMatch");

        Gesture.Tap(verifyMatch);

        UITestControl matchAlert = new UITestControl(myApp);
        matchAlert.TechnologyName = "UIA";

        matchAlert.SearchProperties.Add("ControlType", "Rectangle");
        matchAlert.SearchProperties.Add("AutomationId", "matchAlert");

        var fillColor = matchAlert.GetProperty("Fill");
    }

我也看到Test Builder即使在用作控件时也无法检测到矩形。

我还查看了Rectangle类和Button类,看起来它们的继承链中的第一个常见链接是Windows.UI.Xaml.FrameworkElement。我不知道Coded UI能够检测到哪种类型的对象,以了解是否可能是问题的原因。

0 个答案:

没有答案