0

Я писал тест с «Subliminal's» «SLTextField» и в последнее время столкнулся с некоторыми действительно раздражающими проблемами.Как можно сделать SLTextField доступным?

Я написал тест, который должен обновить текстовое поле, очистить его и снова обновить.

По какой-то причине, когда я использую «SLTextField» для изменения текста элемента, я последовательно получаю ошибки, заявляя, что «SLTextFields» не являются отображаемыми элементами. Это правда? Если да, то в чем смысл вообще иметь класс SLTextField?

Я могу переписать один и тот же тестовый код, чтобы найти элемент как «SLElement», после чего я могу нажать на элемент, открыть объект клавиатуры и ввести нужный текст, но похоже, что я обошел при выполнении этой функции Subliminal.

В чем проблема w/"SLTextField"?

Код:

SLTextField *textField = [SLTextField elementWithAccessibilityLabel:fieldName]; 
SLWaitUntilTrue([textField isTappable], DEFAULT_TIMEOUT); 
textField.text = newValue; 

Приведенный выше код выдает ошибку, заявив, что "TextField" никогда не станет tappable. В качестве альтернативы, код ниже работает отлично, хотя он излишне подробный и, кажется, делает «SLTextField» излишним.

Код:

SLElement *field = [SLElement elementWithAccessibilityLabel:fieldName]; 
[field tapAtActivationPoint]; 
//fill with text 
SLKeyboard *kb = [SLKeyboard keyboard]; 
SLKeyboardKey *deleteKey = [SLKeyboardKey elementWithAccessibilityLabel:@"Delete"]; 
while(![field.value isEqualToString:@""]){ 
    [deleteKey touchAndHoldWithDuration:1.2]; 
} 
[kb typeString:newValue]; 
SLKeyboardKey *doneKey = [SLKeyboardKey elementWithAccessibilityLabel:@"Next"]; 
if(![doneKey isValid]){ 
    doneKey = [SLKeyboardKey elementWithAccessibilityLabel:@"Done"]; 
} 
[doneKey tap]; 
[kb hide]; 
+0

Привет @Maixy, я сторонник Сублиминала. Когда вы пытаетесь использовать 'SLTextField', возникает ли ошибка, которую вы получаете конкретно, что поле не поддается отображению, или, возможно, что оно« не существует »? –

+0

Привет, Джефф, к сожалению, ошибка, которую я получаю, заключается в том, что текстовое поле не поддается отображению. Если я получаю тот же элемент, что и SLElement, однако, во время того же отладки, он является tappable. – Maixy

ответ

3

Ваш TextField в TableViewCell? И вы видите это на iOS 7?

Если да, возможно, это было исправлено https://github.com/inkling/Subliminal/pull/202 (объединено 6/6/2014).

+0

@people в очереди LQP; в копировании и вклеивании связанного патча в вопрос не так много. Этот ответ в порядке. – Matt

+0

@Maixy https://github.com/inkling/Subliminal/pull/202 объяснил бы вашу проблему следующим образом: ячейка представления таблицы с текстовым полем разделяет метку этого поля. Когда вы пытались установить текст поля _text_, Subliminal нашел это поле, но не смог нажать на него. Но когда вы позволяете Subliminal найти «элемент» с именем поля, он обнаружил и нажал на _cell_. Не имело значения, что этот элемент не был текстовым полем, потому что это коснулось текстового поля, а затем вы использовали клавиатуру напрямую. –

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