Я пытаюсь обойти системное предупреждение пользователя, следуя потоку, представленному в следующем посте, который является тем же потоком, который упоминается в шпаргалке по тестированию пользовательского интерфейса и нескольких других сообщениях на SO.
У меня странная проблема, я не могу нажать кнопку ОК. Вот мой код
addUIInterruptionMonitorWithDescription("User Notifications") { (alert) -> Bool in
let okButton = alert.buttons["OK"]
let dontAllowButton = alert.buttons["Don\u{2019}t Allow"]
print(okButton.frame)
print(dontAllowButton.frame)
okButton.tap() // Taps the dontAllowButton ??
return true
}
launchFinished() // wait for app to load and notification to show
app.tap()
Тест успешно проходит в обработчике после того, как я использую app.tap()
, и кнопки найдены и существуют, однако на самом деле он не может нажать кнопку «ОК»! Когда я пытаюсь нажать кнопку «ОК», он нажимает кнопку «Не разрешать», а когда я пытаюсь нажать кнопку «Не разрешать», ничего не нажимается.
Рамки кнопок тоже не соответствуют тому, что на экране.
Когда я отлаживаю и смотрю на кадры, они:
okButton = (431,5, 377,0, 44,0, 135,0)
dontAllowBtn = (431,5, 512,0, 44,0, 135,0)
Кажется, это указывает на то, что у них одинаковое значение X, и одно находится поверх другого, что на самом деле не имеет никакого смысла.
Кроме того, я пытался использовать XCUICoordinate
, чтобы создать некоторые координаты рядом с кнопками и нажимать координаты вместо кнопок, что отлично работает для меня в других местах в приложении, но никакие нажатия координат, похоже, вообще не регистрируются.
Как обойти это предупреждение?
ИЗМЕНИТЬ
Я использую Xcode 7.1.1, и та же проблема возникает со службами определения местоположения. Кажется, это как-то связано с ландшафтным режимом, из-за которого он не работает. Когда я создаю новое тестовое приложение и запускаю приведенный выше код, оно отлично работает в портретном режиме. Когда я переключаю его в ландшафтный режим, он имеет вышеуказанное поведение и не работает.
ИЗМЕНИТЬ 2
Я отправил отчет об ошибке в Apple.
app.swipeUp()
- person Andriko13   schedule 07.06.2017