Как нажать на конкретную точку на симуляторе Xcode - PullRequest
0 голосов
/ 07 ноября 2018

Я работаю с тестированием пользовательского интерфейса Swift, и мне нужно иметь возможность нажимать на определенную точку в моем приложении. Я следовал за ответами из Как нажать на конкретную точку, используя Xcode UITests , который отлично работал для тестирования на iPad. Однако при выполнении того же на симуляторе ничего не происходит. Нет ошибок, программа просто действует так, как будто я нажимаю что-то , но не на что-то конкретное, и программа не может продолжить выполнение, поскольку нужной информации там нет.

Возможно, это локальная проблема? Если нет, что я могу сделать, чтобы нажать на определенные координаты на симуляторе?

1 Ответ

0 голосов
/ 07 ноября 2018

Ну, вы не можете просто коснуться экрана. Вы должны нажать на что-то.

Самое простое, что можно сделать, это нажать элементы в приложении и метод coordinate(withNormalizedOffset:) от Apple.

Создайте метод, который будет иметь элемент входных параметров (вы хотите нажать на него) и смещение (точка, на которую вы хотите нажать). Как то так:

func tap(on element: XCUIElement, xOffset: Double, yOffset: Double) {
    let coordinate = element.coordinate(withNormalizedOffset: CGVector(dx: xOffset, dy: yOffset))

    if element.waitForExistence(5) {
         coordinate.tap()
    }
}

Затем вы можете нажать на любой элемент в тестируемом приложении, вызвав этот метод и присвоив ему элемент.

F.e .: Вы хотите нажать на какую-то точку в самом приложении со смещением 0.8 и 0.5:

tap(on: XCUIApplication(), xOffset: 0.8, yOffset: 0.5)

...