Sdílet prostřednictvím


Nastavení jedinečné vlastnosti automatizace pro ovládací prvky pro Windows Store za účelem testování

Pokud chcete spustit programové testy UI pro vaši aplikaci pro web Windows Store založenou na XAML, je nutné nastavit jedinečnou automatickou vlastnost, která identifikuje každý ovládací prvek.

Lze přiřadit jedinečnou automatickou vlastnost v závislosti na typu ovládacího prvku jazyka XAML ve vaší aplikaci.Tuto jedinečnou automatickou vlastnost lze přiřadit v následujících situacích:

  • Statická definice jazyka XAML ovládacích prvků

  • Přiřazení jedinečné automatické vlastnosti pomocí systému Visual Studio nebo aplikace Blend for Visual Studio

  • Použití šablony dat

  • Použití šablony ovládacího prvku

  • Dynamické ovládací prvky

Použití metod k přiřazení jedinečné automatické vlastnosti

Statická definice jazyka XAML

Chcete-li určit jedinečnou automatickou vlastnost ovládacího prvku, který je definován v souboru jazyka XAML, lze nastavit vlastnosti AutomationProperties.AutomationId nebo AutomationProperties.Name implicitně nebo explicitně, jak je znázorněno v následujících příkladech.Nastavení některé z těchto hodnot poskytuje ovládacímu prvku jedinečnou automatickou vlastnost, která slouží k identifikaci ovládacího prvku, když vytvoříte programový test uživatelského rozhraní nebo nahrávání akce.

Implicitní nastavení vlastnosti

Nastavte vlastnost AutomationProperties.AutomationId na hodnotu ButtonX pomocí vlastnosti Name v kódu jazyka XAML ovládacího prvku.

<Button Name="ButtonX" Height="31" HorizontalAlignment="Left" Margin="23,26,0,0"  VerticalAlignment="Top" Width="140" Click="ButtonX_Click" />

Nastavte vlastnost AutomationProperties.Name na hodnotu ButtonY pomocí vlastnosti Content v kódu jazyka XAML ovládacího prvku.

<Button Content="ButtonY" Height="31" HorizontalAlignment="Left" Margin="23,76,0,0" VerticalAlignment="Top" Width="140" Click="ButtonY_Click" />

Explicitní nastavení vlastnosti

Nastavte vlastnost AutomationProperties.AutomationId na hodnotu ButtonX explicitně v kódu jazyka XAML ovládacího prvku.

<Button AutomationProperties.AutomationId=“ButtonX” Height="31" HorizontalAlignment="Left" Margin="23,26,0,0"  VerticalAlignment="Top" Width="140" Click="ButtonX_Click" />

Nastavte vlastnost AutomationProperties.Name na hodnotu ButtonY explicitně v kódu jazyka XAML ovládacího prvku.

<Button AutomationProperties.Name="ButtonY" Height="31" HorizontalAlignment="Left" Margin="23,76,0,0" VerticalAlignment="Top" Width="140" Click="ButtonY_Click" />

Přiřazení jedinečné automatické vlastnosti pomocí systému Visual Studio nebo aplikace Blend for Visual Studio

Systém Visual Studio nebo aplikaci Blend for Visual Studio lze použít k přiřazení jedinečných názvů interaktivním prvkům, jako jsou například tlačítka, seznamy, pole se seznamem a textová pole.To ovládacímu prvku dává jedinečnou hodnotu vlastnosti AutomationProperties.Name.

Systém Visual Studio: V nabídce Nástroje přejděte na Možnosti, poté vyberte Editor textu, poté XAML a konečně Různé.

Vyberte Automaticky pojmenovat interaktivní prvky při vytvoření a poté vyberte OK.

XAML různé možnosti

Aplikace Blend for Visual Studio: V aplikaci Blend for Visual Studio proveďte jednu z následujících metod.

[!POZNÁMKA]

Tuto metodu lze použít pouze pro ovládací prvky, které jsou vytvořeny staticky pomocí jazyka XAML.

Chcete-li dát jedinečný název existujícím ovládacím prvkům

V nabídce Nástroje zvolte Pojmenovat interaktivní prvky, jak je znázorněno zde:

Zvolte název interaktivní prvky v nabídce Nástroje

Chcete-li automaticky dát jedinečný název ovládacím prvkům, které vytvoříte

V nabídce Nástroje přejděte na Možnosti a poté zvolte Projekt.Vyberte Automaticky pojmenovat interaktivní prvky při vytvoření a poté vyberte OK, jak je znázorněno zde:

Projekt nastaven na název interaktivní prvky

Použití šablony dat

Pomocí prvku ItemTemplate lze definovat jednoduchou šablonu k navázání hodnot v seznamu na proměnné pomocí následujícího kódu jazyka XAML.

<ListBox Name="listBox1" ItemsSource="{Binding Source={StaticResource employees}}">
   <ListBox.ItemTemplate>
      <DataTemplate>
         <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding EmployeeName}" />
            <TextBlock Text="{Binding EmployeeID}" />
         </StackPanel>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

Lze také použít šablonu s prvkem ItemContainerStyle k navázání hodnot na proměnné pomocí následujícího kódu jazyka XAML.

      <ListBox Name="listBox1" ItemsSource="{Binding Source={StaticResource employees}}">
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ListBoxItem">
                                <Grid>
                                    <Button Content="{Binding EmployeeName}" AutomationProperties.AutomationId="{Binding EmployeeID}"/>
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListBox.ItemContainerStyle>         
        </ListBox>

Pro oba tyto příklady je poté nutné přepsat metodu ToString() třídy ItemSource, jak je znázorněno pomocí následujícího kódu.Tento kód zajišťuje, že hodnota vlastnosti AutomationProperties.Name je nastavena a je jedinečná, protože nelze nastavit jedinečnou automatickou vlastnost pro každou položku seznamu vázanou na data pomocí vazby.Nastavení jedinečné hodnoty vlastnosti AutomationProperties.Name je v tomto případě dostatečné.

[!POZNÁMKA]

Pomocí tohoto přístupu lze vnitřní obsah položky seznamu také nastavit na řetězec prostřednictvím vazby ve třídě Employee.Jak je znázorněno v příkladu, ovládacímu prvku tlačítko uvnitř každé položky seznamu je přiřazen jedinečný automatický identifikátor, kterým je ID zaměstnance.

Employee[] employees = new Employee[] 
{
   new Employee("john", "4384"),
   new Employee("margaret", "7556"),
   new Employee("richard", "8688"),
   new Employee("george", "1293")
};

listBox1.ItemsSource = employees;

public override string ToString()
{
    return EmployeeName + EmployeeID; // Unique Identification to be set as the AutomationProperties.Name
}

Použití šablony ovládacího prvku

Lze použít šablony ovládacího prvku tak, aby každá instance určitého typu získala jedinečnou automatickou vlastnost, když je definována v kódu.Je nutné vytvořit šablonu, aby se automatická vlastnost navázala na jedinečný identifikátor instance ovládacího prvku.Následující kód jazyka XAML ukazuje jeden přístup k vytvoření této vazby s šablonou ovládacího prvku.

<Style x:Key="MyButton" TargetType="Button">
<Setter Property="Template">
   <Setter.Value>
<ControlTemplate TargetType="Button">
   <Grid>
      <CheckBox HorizontalAlignment="Left" AutomationProperties.AutomationId="{TemplateBinding Content}"></CheckBox>
      <Button Width="90" HorizontalAlignment="Right" Content="{TemplateBinding Content}" AutomationProperties.AutomationId="{TemplateBinding Content}"></Button>
   </Grid>
</ControlTemplate>
   </Setter.Value>
</Setter>
</Style>

Když definujete dvě instance tlačítka s použitím této šablony ovládacího prvku, automatický identifikátor je nastavena na jedinečný řetězec obsahu pro ovládací prvky v šabloně, jak je znázorněno v následujícím kódu jazyka XAML.

<Button Content=”Button1” Style="{StaticResource MyButton}" Width="140"/>
<Button Content=”Button2” Style="{StaticResource MyButton}" Width="140"/>

Dynamické ovládací prvky

Používáte-li ovládací prvky, které jsou vytvořeny dynamicky z kódu a nejsou vytvořeny staticky nebo pomocí šablon souboru jazyka XAML, je nutné nastavit vlastnosti Content a Name tohoto ovládacího prvku.Tím je zajištěno, že každý dynamický ovládací prvek obsahuje jedinečnou automatickou vlastnost.Například, pokud máte zaškrtávací políčko, které musí být zobrazeno při výběru položky seznamu, lze tyto vlastnosti nastavit, jak je znázorněno zde:

private void CreateCheckBox(string txt, StackPanel panel)
   {
      CheckBox cb = new CheckBox();
      cb.Content = txt; // Sets the AutomationProperties.Name
      cb.Height = 50;
      cb.Width = 100;
      cb.Name = "DynamicCheckBoxAid"+ txt; // Sets the AutomationProperties.AutomationId
      panel.Children.Add(cb);
    }

Viz také

Koncepty

Testování aplikací pro Windows Store pomocí programových testů uživatelského rozhraní