EarlGrey зависает на некоторое время, когда я ищу на большом наборе TableViewCells

ios earlgrey

142 просмотра

1 ответ

4066 Репутация автора

Я работал над базовым учебным приложением для iOS и подумал, что смогу начать EarlGreyс ним изучать . Тест, который я автоматизирую, имеет этот поток -

  • У меня есть большой UITableView, и я предварительно заполняю его случайными словами, которые я генерирую. Они могут быть довольно длинными, и у меня может быть более 100 ячеек в моем TableView.

  • В моем тесте я случайным образом выбираю одно из сгенерированных слов и ищу его в ячейке. Каждая ячейка имеет следующий интерфейс:

        |                                         |
        |   |Word|  |Word-Count| |  UIImage   |   |
        |                                         |
    

Так что в EarlGrey-

- (void)setup {
    [super setup];
    GeneratorClass dataSource =
        [[GeneratorClass alloc] initWithRandomData];
    self.tableView.dataSource = dataSource;
    _randomSelectedValue = dataSource.randomValue;
}
- (void)testTableElementVisible {
    id<GREYMatcher> *cellMatcher = grey_allOf(grey_minimumVisiblePercent(0.0f), 
                                   grey_interactable(), 
                                   grey_isKindOfClass([UITableViewCell class]), 
                                   grey_text(_randomSelectedValue), nil);
    [[EarlGrey selectElementWithMatcher:cellMatcher] 
        asserWithMatcher:grey_sufficientlyVisible()];
    [[EarlGrey selectElementWithMatcher:cellMatcher]    
        performAction:grey_tap()];
}

Однако на Jenkins этот тест занимает довольно много времени и завершается неудачно "Timeout (currently set to 30) occurred when looking for elements.". Экран заморожен, и хотя локально я вижу, как происходит касание, я не смог его пройти. Есть ли способ, которым я могу ускорить этот тест, или я делаю что-то не так, что вызывает зависание EarlGrey?

Автор: gran_profaci Источник Размещён: 18.07.2016 08:26

Ответы (1)


1 плюс

500 Репутация автора

Решение

Не удивительно, что так долго. У вас есть grey_minimumVisiblePercentпервый матч в grey_allOf. То, что это делает, - пропускает каждый элемент в иерархии пользовательского интерфейса через эти сопоставители в том порядке, в котором они указаны, и останавливается только в случае сбоя одного из сопоставителей или когда все они проходят (т.е. сопоставляются). Чтобы избежать этой проблемы, вы всегда должны делать выборочные и наименее избирательные совпадения. Использование этой логики, grey_text(_randomSelectedValue)кажется, является наиболее избирательным, поэтому используйте его в качестве первого сопоставителя, а затем используйте остальные в порядке уменьшения избирательности.

Автор: khandpur Размещён: 23.08.2016 08:18
Вопросы из категории :
32x32