2017-02-07 11 views
1

Мой пользовательский интерфейс использует настраиваемый элемент управления для представления переключателя да/нет. В тесте UI я хотел бы использовать да или нет для каждой итерации элемента управления на экране, но запрос AutomationID захватывает первый результат. Как я могу получить доступ к дочерней кнопке определенного пользовательского элемента управления? Элементами, которые я ищу, являются кнопки ButtonNo/ButtonYes SwitchLPRrec и ButtonNo/ButtonYes кнопки SwitchTowDolly.Xamarin.UITest Tap Ребенка пользовательского контроля, где дочерние элементы имеют одинаковый AutomationID

Пользовательские коммутатор

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); 
     } 

} 

РЕПЛ из экрана

enter image description here

ответ

1

Перепрограммирования таможенного контроля подвергается, что контейнеры, а не идентификаторы автоматизации я добавил были реальные дети контроля.

> >>> 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 
>  } ] 

Какой ответ был очевиден.

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

 Смежные вопросы

  • Нет связанных вопросов^_^