2016-01-21 16 views
0

Я пытаюсь разработать простые тесты кодированного интерфейса, которые получают доступ к двум следующим функциям. В настоящее время они написаны с использованием структуры CUITe, но я вижу ту же проблему при использовании кода кодированного интерфейса.Воспроизведение тестового кодированного пользовательского интерфейса. Неправильное управление выбирается и используется

У меня есть тестовый пример, который сначала вызывает GLJEEnterDescription, а затем вызывает GLJEEnterNotes. Когда тест запускается, GLJEEnterDescription управляется, и в него вводятся BOTH строки, введенные в функции. В GLJEEnterNotes ничего не происходит. Я проверил и перепроверял, и свойства элементов управления правильны.

Единственное отличие между двумя элементами управления - GLJEEnterDescription - это стандартное однострочное текстовое поле, а GLJEEnterNotes - это стандартное (производное от стандартного) многострочное текстовое поле. Любые мысли о том, почему я не смог бы получить доступ и использовать текстовое поле GLJEEnterNotes, но не текстовое поле GLJEEnterDescription? Ниже мои функции вызываются из кодированных тестов пользовательского интерфейса:

public void GLJEEnterDescription(string JEDescription) 
{ 
    akwindow.Find<WinEdit>(By.ControlName("txtJEDescription")).Text = JEDescription; 
} 

public void GLJEEnterNotes(string JENotes) 
{ 
    akwindow.Find<WinEdit>(By.ControlName("txtMultiJENotes")).Text = JENotes; 
} 
+0

Когда вы говорите «пользовательское» текстовое поле, вы имеете в виду, что это текстовое поле «multi line», встроенное в IDE для VS или это элемент управления, который вы или другая компания создали? Как и в, пользовательский элемент управления. – Brian

+0

Эй, Брайан, спасибо, что ответили. Это многострочное текстовое поле, но оно было создано компанией, но не уверен, почему, поскольку нет никакой дополнительной функциональности. Когда я смотрю на файл конструктора, я вижу это: внутренний CustomControls.CompanyNameTextboxMultiLine txtMultiJENotes; –

+0

Вы уверены, что вы переключите фокус на свое второе текстовое поле (GLJEEnterNotes) во время выполнения кода? Значит, ваш код видит второе текстовое поле? – Brian

ответ

0

Вы, скорее всего, нужны указать несколько критериев поиска для этих элементов управления.

В идеале я бы рекомендовал использовать контрольные ID или даже AutomationID для ваших элементов управления. Это приоритет HIGHEST для алгоритма поиска Как и в This сообщение

var textBox = new WinEdit(yourAppWindow); 
textBox.SearchProperties.Add(WinEdit.PropertyNames.Name, "txtMultiJENotes"); 
textBox.SearchProperties.Add(WinEdit.PropertyNames.LineCount, "1"); 

еще вы, возможно, придется использовать FindMatchingControls и цикл каждого элемента управления для правильных вещей, которые вы хотите.

+0

Спасибо всем за ответы. Странно, когда элемент управления имеет фактическое свойство «Имя» (которое, как представляется, относится к значению в свойстве .Text), тогда свойство Name работает нормально. Однако, если я должен зависеть от ControlName, как в моем коде выше, он редко находит элемент управления. Все мои контрольные ID кажутся равными 0. Где это значение установлено? Я создал простое приложение winform, добавил к нему элемент управления текстовыми полями и не увидел свойство, которое бы приравнивалось к идентификатору элемента управления? Идентификаторы автоматизации недоступны, так как это приложение winforms и не использует элементы управления WPF. –

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