Значок приложения не отображается на устройствах iOS 13 и не может быть нажат с помощью XCUITest - PullRequest
1 голос
/ 05 ноября 2019

Я использую следующий метод для удаления своего приложения из Springboard, но кажется, что время от времени его кадр кажется за кадром, и поэтому isHittable становится ложным.

let springApp = XCUIApplication(bundleIdentifier: "com.apple.springboard")    
let icon = springApp.otherElements.icons["App Name"]
        if icon.exists {
            let iconFrame = icon.frame
            icon.press(forDuration: 3)

            springApp.tapAtPoint(iconFrame.origin)

            sleep(0.5)
            springApp.alerts.buttons["Delete"].tap()

Ниже предоставлена ​​позициякогда возникает проблема:

 ▿ (-2.0, -2.0, 4.0, 4.0)
  ▿ origin : (-2.0, -2.0)
    - x : -2.0
    - y : -2.0
  ▿ size : (4.0, 4.0)
    - width : 4.0
    - height : 4.0

Есть идеи, почему это происходит, и могу ли я как-то это исправить? Похоже, он не воспроизводится на устройствах iOS 12.

1 Ответ

1 голос
/ 06 ноября 2019

Springboard, похоже, возвращает правильные координаты при сбросе макета главного экрана: Настройки -> Общие -> Сброс -> Сброс макета главного экрана.

Ниже вы можете найти решение, которое работает для меня без лишних слов:

func resetHomeScreenLayout(file: String = #file, line: Int = #line) {
    settingsApp.launch()

    let settingsGeneralCell = settingsApp.cells["General"]
    XCTAssertTrue(settingsGeneralCell.waitForExistence(timeout: Constants.smallWaitTime),
                  "The \"General\" cell in Settings was not found. Error in file \(file) at line \(line).")
    settingsGeneralCell.tap()

    let settingsResetCell = settingsApp.cells["Reset"]
    XCTAssertTrue(settingsResetCell.waitForExistence(timeout: Constants.smallWaitTime),
                  "The \"Reset\" cell in Settings was not found. Error in file \(file) at line \(line).")
    settingsResetCell.tap()

    let settingsResetHomeScreenLayoutLink = settingsApp.staticTexts["Reset Home Screen Layout"]
    XCTAssertTrue(settingsResetHomeScreenLayoutLink.waitForExistence(timeout: Constants.smallWaitTime),
                  "The \"Settings\" link \"Reset Home Screen Layout\" was not found. Error in file \(file) at line \(line).")
    settingsResetHomeScreenLayoutLink.tap()

    let settingsResetHomeScreenPopOverButton = settingsApp.sheets.buttons["Reset Home Screen"]
    XCTAssertTrue(settingsResetHomeScreenPopOverButton.waitForExistence(timeout: Constants.smallWaitTime),
                  "The \"Settings\" popover \"Reset Home Screen\" button was not found. Error in file \(file) at line \(line).")
    settingsResetHomeScreenPopOverButton.tap()

    settingsApp.terminate()
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...