2016-08-24 2 views
0

Я запускаю пользовательские интерфейсы с помощью рамки XCTest.XCode UI Test много раз пытается найти элемент до достижения

Все работает отлично, за исключением того, что на некоторых моих тестах XCTest должен попробовать много много раз, чтобы успешно найти UIElement, который он ищет. Похоже, что это происходит с элементами меню, которые содержатся в меню, созданном с помощью кнопки в ячейке таблицы.

Вот код одного из моих тестов, который имеет такое поведение.

func testMoreMenuCopyDirectLinkAction() 
{ 
    //Arrange 
    CloudPasteboardController.clearClipboard() 
    XCTAssertTrue(CloudPasteboardController.getPasteboardItems().count == 0) 
    let app = XCUIApplication() 
    let firstCell = app.tables.cells.elementBoundByIndex(0) 
    let moreMenu = firstCell.menus.elementBoundByIndex(0) 
    let copyDirectLink = moreMenu.menuItems.elementMatchingType(.MenuItem, identifier: "Copy Direct Link") 

    //Act 
    openApp() 
    findAndClickCellButtonWithName("More Button") 
    waitForUIElementToAppear(copyDirectLink) 
    copyDirectLink.click() 

    //Assert 
    XCTAssertTrue(CloudPasteboardController.getPasteboardItems().count == 1) 
} 

Вот скриншот частичного вывода. Как видно, он несколько раз пытается найти элемент в виде цикла. В целом в этом тесте это удалось в 11-м цикле.

Screenshot of test output

Я попытался повторно писать код без вызова «waitForUIElementToAppear (...)», и я попытался упростить вызов, просто говоря «copyDirectLink = app.menuItems [» Скопировать прямую ссылку "]", но это ничего не меняет.

+0

Похоже на то, что он зациклился на мне. Может быть, он ждет его появления или чего-то еще. – Alex

ответ

0

Не уверен, что ваши вопросы есть ...

Вы не хотите тест ждать пункта появляться? Это почти наверняка приведет к тому, что тест будет терпеть неудачу каждый раз.

Ваши тесты занимают больше времени, чем вам хотелось бы? Если это так, установите Xcode-сервер и пусть тесты выполняются в фоновом режиме или запускают их, когда вы собираетесь перекусить или что-то еще. (Сервер Xcode - это не то, что вы сможете настроить через полчаса, потребуется немного времени на инвестиции, особенно для правильной работы тестов UI)

Вам интересно, почему это так долго? Тесты пользовательского интерфейса всегда работают медленно, никогда не измеряют производительность приложения во время тестов пользовательского интерфейса, вы будете очень разочарованы. У меня есть один тест пользовательского интерфейса, который нажимает кнопку на главном экране, проверяет, что на экране появляется значок, кратковременная кнопка и проверка экрана. Как человек, я могу выполнить этот тест примерно через 7 секунд после нажатия значка, для выполнения теста UI требуется 18 секунд.

+0

его лучше попросить разъяснения в комментариях, а затем опубликовать четкий ответ –

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