Как ввести текст в одно и то же текстовое поле с помощью KIF

Я использую Kif и пытаюсь создать некоторые данные, используя текстовое поле и кнопку добавления.

Если я использую этот код один раз:

- (void)addTextItem
{
    [tester enterText:[NSString stringWithFormat:@"Test text %@",[self randomStringWithLength:10]] intoViewWithAccessibilityLabel:NSLocalizedString(@"TBP_TFL_WRITE_YOUR_TEXT", nil)];
    [tester waitAndTapTappableViewWithAccessibilityLabel:NSLocalizedString(@"TBP_BTN_ADD_TEXT", nil)];
}

это работает хорошо. Но если я попытаюсь снова использовать одно и то же текстовое поле, например:

- (void)addTextItem
{
    [tester enterText:[NSString stringWithFormat:@"Test text %@",[self randomStringWithLength:10]] intoViewWithAccessibilityLabel:NSLocalizedString(@"TBP_TFL_WRITE_YOUR_TEXT", nil)];
    [tester waitAndTapTappableViewWithAccessibilityLabel:NSLocalizedString(@"TBP_BTN_ADD_TEXT", nil)];
    [tester enterText:[NSString stringWithFormat:@"Test text %@",[self randomStringWithLength:10]] intoViewWithAccessibilityLabel:NSLocalizedString(@"TBP_TFL_WRITE_YOUR_TEXT", nil)];
    [tester waitAndTapTappableViewWithAccessibilityLabel:NSLocalizedString(@"TBP_BTN_ADD_TEXT", nil)];
}

Я получаю эту ошибку:

Срок действия шага истек через 10,00 секунд: элемент специальных возможностей с меткой «Напишите свою фразу (используйте # для создания тегов)» недоступен. Он может быть заблокирован другими представлениями.

(Как вы понимаете "Напишите свою фразу (используйте # для создания тегов)" = TBP_TFL_WRITE_YOUR_TEXT )

Любые идеи?


person Zaporozhchenko Oleksandr    schedule 18.08.2015    source источник


Ответы (1)


вместо

[tester enterText:[NSString stringWithFormat:@"Test text %@",[self randomStringWithLength:10]] intoViewWithAccessibilityLabel:NSLocalizedString(@"TBP_TFL_WRITE_YOUR_TEXT", nil)];

Вы хотите использовать

[tester clearTextFromAndThenEnterText:[NSString stringWithFormat:@"Test text %@",[self randomStringWithLength:10]] intoViewWithAccessibilityLabel:NSLocalizedString(@"TBP_TFL_WRITE_YOUR_TEXT", nil)];

Для целей моего объяснения скажем, когда вы в первый раз вводите «первый», а во второй раз — «второй».

Я не совсем уверен в этой ошибке, но я знаю, что тест завершится ошибкой, потому что, если вы сначала не очистите текстовое поле, вы добавите к первой записи. Это означает, что в текстовом поле теперь будет указано «firstsecond». После того, как KIF поместит текст в текстовое поле во второй раз, он проверит «второй», но не найдет его, потому что текстовое поле на самом деле содержит «первый второй», и поэтому он не будет работать.

person Abbey Jackson    schedule 17.09.2015
comment
clearText также не работает, почему-то он не очищает текст, и вы получаете ту же ошибку - person Zaporozhchenko Oleksandr; 17.09.2015
comment
Если clearText не очищает текст, я бы попросил автора KIF либо отправить сообщение на github.com/ kif-framework/KIF или разместив сообщение в справке сообщества KIF по адресу groups.google.com/forum/#!forum/kif-framework. Это очень простая команда, основная часть KIF, если она не очищает текстовое поле, происходит что-то еще. - person Abbey Jackson; 17.09.2015
comment
Еще я предлагаю добавить задержку как до, так и после второго ввода текста, используя [tester waitForTimeInterval:20];. Возможно, что-то все еще загружается. Число секунд. Начните с высокого уровня для обоих и, если это сработает, уменьшите, пока вы снова не получите ошибку. Затем выберите число немного выше для тех дней, когда сервер/симулятор/устройство немного медленнее. - person Abbey Jackson; 17.09.2015