2016-02-05 2 views
1

У меня есть элемент управления, который является первым сыном родителя, но ничто не уникально в родительском и контрольном. Я могу найти уникальные свойства для детей Scond, поэтому мне нужно найти предыдущего родного брата второго ребенка.Есть ли способ найти предыдущий брат в кодированном пользовательском интерфейсе

+0

это приложение для веб-приложений, wpf, windows или windows store? в зависимости от типа приложения вы можете искать братьев и сестер. У вас есть дополнительная информация о приложении, которое вы пытаетесь проверить? скриншот, запуск кода? –

+0

Это настольное приложение, и я использую CodedUI для автоматизации –

ответ

1

Это возможно, используя свойство SearchConfiguration на элементе управления. Что вы делаете, так это поиск метки, а затем вы создаете экземпляр элемента управления WinEdit и передаете его в элементе управления меткой. Затем вы установите на экземпляр WinEdit SearchConfiguration.Add (SearchConfiguration.NextSibling) , теперь он будет искать следующего брата текстовой метки. в примере кода это выглядит следующим образом:

var app = ApplicationUnderTest.Launch(@"yourapplication.exe"); 
var mainWindow = new WinWindow(app); 
mainWindow.WindowTitles.Add("Form1"); 

WinText textLabel = new WinText(mainWindow); 
textLabel.SearchProperties.Add(WinControl.PropertyNames.Name, "Some Text Label"); 

WinEdit siblingEditControl = new WinEdit(textLabel); 
siblingEditControl.SearchConfigurations.Add(SearchConfiguration.NextSibling); 
siblingEditControl.Text = "setting the text"; 
0

Там нет прямых методов для получения братьев и сестер. Один из способов найти братьев и сестер элемента управления - найти его родителя, а затем найти все дочерние элементы этого родителя. Затем выполните поиск через детей, чтобы найти текущий элемент управления, а затем взять предыдущий. Метод может основываться на следующем. Он использует поля Name элемента управления для сравнения, это может быть неверно для общего случая, и я предлагаю проверить другие значения.

public UITestControl GetPreviousSibling(UITestControl uitc) 
{ 
    UITestControlCollection siblings = uitc.GetParent().GetChildren(); 
    // Note that 'sibings[0]' has no predecessor 
    for (int ii=1; ii<siblings.Count) 
    { 
     if (uitc.Name == siblings[ii].Name) 
     { 
      return siblings[ii - 1]; 
     } 
    } 

    return null; 
} 

Определение понятия «родной брат» не ясен. В этом MSDN blog приведены некоторые сведения о братьях и сестрах.

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