2016-08-24 49 views
0

我使用XCTest框架運行UI測試。XCode UI測試在成功之前嘗試多次查找元素

一切工作正常,除了在我的一些測試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測試才能正常工作)

你想知道爲什麼需要這麼長時間嗎? UI測試總是運行緩慢,從不測量UI測試期間的應用性能,您會非常失望。我有一個UI測試,點擊主屏幕上的一個按鈕,驗證出現一個關於屏幕,點擊完成按鈕,並驗證關於屏幕消失。作爲一個人,我可以在點擊該圖標約7秒鐘後進行測試,UI測試需要18秒才能完成測試。

+0

它更好地要求澄清的意見,然後發表一個明確的答案 –