XCUITest я использую isHittable, но происходит сбой утверждения? мой iphone — ios 12

#xcuitest

#xcuitest

Вопрос:

мой код :

 if(button.isHittable)//when it returns false,test fail, I can not do button2.tap 
{ 
   button1.tap 
}else{ 
   button2.tap 
}
  

Прежде чем нажать кнопку, я использую button.isHittable, чтобы получить, можно ли нажать кнопку. но когда я использую button.isHittable и получает false, происходит сбой утверждения, и мой тест завершается неудачей.Я хочу, когда кнопка.isHittable имеет значение false, я могу продолжить выполнение другого шага.

как я могу это сделать?

Комментарии:

1. isHittable сломан. Я удален из всех своих тестов.

2. Можете ли вы предоставить дополнительную информацию о своих идентификаторах? Кажется, у вас здесь определены три кнопки, но логически кажется, что у вас может быть только две (было бы странно нажимать button1, если кнопка доступна для нажатия)? Какое сообщение об ошибке вы видите? Не могли бы вы, пожалуйста, вставить его? Возможно, это button2 неверно определено, а не утверждение, возникающее при вашей проверке isHittable .

Ответ №1:

  1. Вы проверяете, доступна ли кнопка для нажатия, но нажимаете button1. Вы должны правильно называть свои элементы, чтобы избежать подобных ошибок.
  2. Вы не должны включать конструкции if-else в свой тестовый код. Шаги ваших тестов должны быть предопределены, чтобы уменьшить количество ложноположительных тестов.

Ответ №2:

Как вы идентифицируете свою кнопку с вашим запросом? Вы делаете это вот так?

 XCUIApplication().buttons.firstMatch
  

Используете ли вы свойство firstMatch? https://developer.apple.com/documentation/xctest/xcuielementtypequeryprovider/2902250-firstmatch

Если это так, вы должны проверить, существует ли button. прежде чем проверять, есть ли кнопка.isHittable — если вы используете firstMatch, это очень похоже на принудительное разворачивание необязательного.

Пример:

 if button.exists amp;amp; button.isHittable { ... safely tap the button here }