2017-02-07 1 views
1

Meine Benutzeroberfläche verwendet ein benutzerdefiniertes Steuerelement, um einen Ja/Nein-Schalter darzustellen. Auf dem UI-Test würde ich gerne Ja oder Nein für jede Iteration des Steuerelements auf dem Bildschirm tippen können, aber die Abfrage durch die AutomationID ergreift das erste Ergebnis. Wie kann ich auf die untergeordnete Schaltfläche eines bestimmten benutzerdefinierten Steuerelements zugreifen? Die Elemente, auf die ich tippen möchte, sind SwitchLPRrecs ButtonNo/ButtonYes und SwitchTowDollys ButtonNo/ButtonYes.Xamarin.UITest Tippen Sie auf Kind des benutzerdefinierten Steuerelements, in dem untergeordnete Elemente dieselbe Automatisierungs-ID haben

CUSTOM

public RC_Switch_YesNo() 
{ 

     try 
     { 
      this.HorizontalOptions = LayoutOptions.Center; 
      this.VerticalOptions = LayoutOptions.Center; 

      negative = new Button(); 
      negative.Text = "No"; 
      negative.AutomationId = "ButtonNo"; 
      negative.Style = AppStyling.Style_Button_Switch; 
      negative.Clicked += (o, s) => OnSelectedItemChanged(this, ItemSelected, (int)Enums_RecoveryConnect.SelectionStatus.SelectionFalse); 

      positive = new Button(); 
      positive.Text = "Yes"; 
      positive.AutomationId = "ButtonYes"; 
      positive.Style = AppStyling.Style_Button_Switch; 
      positive.Clicked += (o, s) => OnSelectedItemChanged(this, ItemSelected, (int)Enums_RecoveryConnect.SelectionStatus.SelectionTrue);    

      if(Device.Idiom == TargetIdiom.Tablet) 
      { 
       negative.HeightRequest = (int)AppStyling.TabletEntry.TabletHeight; 
       positive.HeightRequest = (int)AppStyling.TabletEntry.TabletHeight; 
       negative.FontSize = (int)AppStyling.TabletEntry.TabletEntryTextSize; 
       positive.FontSize = (int)AppStyling.TabletEntry.TabletEntryTextSize; 
      } 

      this.Children.Add(negative, 0,0); 
      this.Children.Add(positive, 1,0); 
     } 
     catch(System.Exception ex) 
     { 
      Helpers.Helper_ErrorHandling.SendErrorToServer(ex); 
     } 

} 

REPL von Screen

enter image description here

Antwort

1

ausgesetzt, um die individuelle Steuerung Blinken, dass die Behälter und nicht die Automatisierung ids ich die eigentlichen Kinder aufgenommen hatte, waren der Kontrolle.

> >>> app.Flash(e => e.Marked("SwitchLPRrec").Child()) Flashing query for Marked("SwitchLPRrec").Child() gave 2 results. [ 
>  [0] { 
>   Id => null, 
>   Description => "md5da774f1c80869349b7bd94a8742a495b.ListButtonRenderer{e95cedd 
> V.E...... ........ 0,0-688,192}", 
>   Rect => { 
>    Width => 688, 
>    Height => 192, 
>    X => 20, 
>    Y => 1501, 
>    CenterX => 364, 
>    CenterY => 1597 
>   }, 
>   Label => "ButtonNo_Container", 
>   Text => null, 
>   Class => "md5da774f1c80869349b7bd94a8742a495b.ListButtonRenderer", 
>   Enabled => true 
>  }, 
>  [1] { 
>   Id => null, 
>   Description => "md5da774f1c80869349b7bd94a8742a495b.ListButtonRenderer{568fc95 
> V.E...... ........ 712,0-1400,192}", 
>   Rect => { 
>    Width => 688, 
>    Height => 192, 
>    X => 732, 
>    Y => 1501, 
>    CenterX => 1076, 
>    CenterY => 1597 
>   }, 
>   Label => "ButtonYes_Container", 
>   Text => null, 
>   Class => "md5da774f1c80869349b7bd94a8742a495b.ListButtonRenderer", 
>   Enabled => true 
>  } ] 

Was die Antwort ziemlich offensichtlich machte.

>>> app.Tap(e => e.Marked("SwitchLPRrec").Child().Marked("ButtonNo_Container")) 
Using element matching Marked("SwitchLPRrec").Child().Marked("ButtonNo_Container"). 
Tapping coordinates [ 364, 1597 ]. 
Verwandte Themen