Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Coded UI Test Datatemplate Controls identifizieren
Dragon-Sword
myCSharp.de - Member



Dabei seit:
Beiträge: 127
Herkunft: Franken

Themenstarter:

Coded UI Test Datatemplate Controls identifizieren

beantworten | zitieren | melden

Hallo zusammen,

wie kann man bei Coded UI Test die Controls einer Listbox, die über Datatemplate gesetzt wurden eindeutig identifizieren?

 <ListBox Name="_listBox">
            <ListBox.ItemTemplate>
                <DataTemplate DataType="{x:Type TestTesting:StringValue}">
                    <ContentControl Content="{Binding}" Margin="3,0,3,5">
                        <ContentControl.Resources>
                            <DataTemplate x:Key="TypeOne">
                                <Border BorderBrush="Red" BorderThickness="1">
                                    <TestTesting:TextBoxTextTastatur x:Name="_txt" Text="{Binding Value}" AutomationProperties.HelpText="{Binding Nr}"/>
                                </Border>
                            </DataTemplate>

                            <DataTemplate x:Key="TypeTwo">
                                <Border BorderBrush="Aqua" BorderThickness="1">
                                    <TestTesting:TextBoxTextTastatur x:Name="_txt" Text="{Binding Value}" AutomationProperties.HelpText="{Binding Nr}"/>
                                </Border>
                            </DataTemplate>

                            <DataTemplate x:Key="TypeThree">
                                <Border BorderBrush="Purple" BorderThickness="1">
                                    <TestTesting:TextBoxTextTastatur x:Name="_txt" Text="{Binding Value}" AutomationProperties.HelpText="{Binding Nr}"/>
                                </Border>
                            </DataTemplate>
                        </ContentControl.Resources>

                        <ContentControl.ContentTemplate>
                            <DataTemplate DataType="{x:Type TestTesting:StringValue}">
                                <ContentControl Name="cp" Content="{Binding}" />
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding Nr}" Value="1">
                                        <Setter TargetName="cp" Property="ContentTemplate" Value="{StaticResource TypeOne}"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding Nr}" Value="2">
                                        <Setter TargetName="cp" Property="ContentTemplate" Value="{StaticResource TypeTwo}"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding Nr}" Value="3">
                                        <Setter TargetName="cp" Property="ContentTemplate" Value="{StaticResource TypeThree}"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </ContentControl.ContentTemplate>
                    </ContentControl>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
private Nachricht | Beiträge des Benutzers
Robin0
myCSharp.de - Member



Dabei seit:
Beiträge: 213

beantworten | zitieren | melden

Das widerspricht sich,wenn du Eine Listbox hast hättest du die benannten elemente mehrfach wodurch diese ihre eindeutigkeit verlieren. du kannst höchstens auf die visualchildren als array zugreifen.

[edit: Es sei denn du willst nur innerhalb deines Listboxitems darauf zugreifen, dann geht das wie immer über x:Name
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Robin0 am .
private Nachricht | Beiträge des Benutzers
Dragon-Sword
myCSharp.de - Member



Dabei seit:
Beiträge: 127
Herkunft: Franken

Themenstarter:

beantworten | zitieren | melden

Vielen Dank für die Antwort.

Folgender Code sollte die TextBox innerhalb des ListBoxItems zurückgeben:


public WpfEdit UIItemEdit
        {
            get
            {
                if ((this.mUIItemEdit == null))
                {
                    this.mUIItemEdit = new WpfEdit(this);
                    #region Suchkriterien
                    this.mUIItemEdit.SearchProperties[WpfListItem.PropertyNames.HelpText] = "2";
                    this.mUIItemEdit.WindowTitles.Add("MainWindow");
                    #endregion
                }
                return this.mUIItemEdit;
            }
        }

Allerdings bekomme ich bei keiner TextBox AutomationProperties.HelpText zurück bzw. ist immer leer.
private Nachricht | Beiträge des Benutzers
Robin0
myCSharp.de - Member



Dabei seit:
Beiträge: 213

beantworten | zitieren | melden

Leitet WpfEdit von TExtbox ab oder warum erwartesrt du eine Textbox?
private Nachricht | Beiträge des Benutzers
Dragon-Sword
myCSharp.de - Member



Dabei seit:
Beiträge: 127
Herkunft: Franken

Themenstarter:

beantworten | zitieren | melden

Der Grundcode wurde von Generator erstellt. Allerdings wurde beim ausführen immer die gleiche TextBox beschrieben. jetzt such ich einen Weg diese unterschiedlichen TextBoxen zu identifizieren
private Nachricht | Beiträge des Benutzers
Robin0
myCSharp.de - Member



Dabei seit:
Beiträge: 213

beantworten | zitieren | melden

Erstell dir eine custom Property und häng die an deien tetxboxen dran z.B eine nummerierung

 
//namespace BliBlaBlub
public static class MyAttachedProps
{
        public static readonly DependencyProperty InternalKeyProperty =
            DependencyProperty.RegisterAttached("InternalKey", typeof(String), typeof(MyAttachedProps));

public static String GetInternalKey(DependencyObject obj) { return (String)obj.GetValue(InternalKeyProperty ); }

        public static void SetInternalKey(DependencyObject obj, String value) { obj.SetValue(InternalKeyProperty Property, value); }
}


<Window x:Class="BliBlaBlub.MyClass"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:AttachedKey="clr-namespace:BliBlaBlub.MyAttachedProps">

<ListView>
.
.
<ItemTemplate>
<TextBox AttachedKey:InternalKey="Key1" />
<TextBox AttachedKey:InternalKey="Key2" />
<TextBox AttachedKey:InternalKey="Key3" />
<ListView>
</ItemTemplate>
</Window>

und dann kannst du deine TextBoxen über "BliBlaBlub.MyAttachedProps.GetInternalKey(textbox)" unterscheiden

Natürlich wider widerholt sich der Key dann pro Item in deiner ListView immerwider
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Robin0 am .
private Nachricht | Beiträge des Benutzers