XCTest — как запросить подстроку в заголовке панели навигации

#ios #swift #xcode #xcode-ui-testing

#iOS #swift #xcode #xcode-ui-тестирование

Вопрос:

Я хотел бы иметь возможность проверить, отображается ли подстрока на панели навигации в тесте пользовательского интерфейса.

Например, если заголовок панели навигации — «Аренда свойств», я могу сопоставить его следующим образом:

 XCTAssert(XCUIApplication().staticTexts["Rent Properties"].exists)
  

Однако у этого есть две проблемы:

  • Если текст отсутствует в навигационной панели, он все равно будет соответствовать
  • Это точное совпадение, тогда как я хочу иметь возможность сопоставлять подстроку, такую как «Аренда»

Как это можно сделать?

Ответ №1:

Для сопоставления аренды подстроки вы можете использовать приведенный ниже код:

 XCUIApplication().staticTexts.matchingPredicate(NSPredicate(format: "label CONTAINS 'Rent'")).elementBoundByIndex(0)
//it may contains one or more element with substring Rent.
//you have to find out which element index you want in debug mode using p print() options.
  

Для первого варианта, безусловно, должна быть разница, пока элемент отображается или не отображается. вы должны выяснить это, используя опцию печати po или p в режиме отладки.

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

вы можете попытаться использовать :

 let app = XCUIApplication()
XCTAssert(app.staticTexts["Rent Properties"].exists)

or 
let app = XCUIApplication()
app.staticTexts["Rent Properties"].hittable

or
let app = XCUIApplication()
app.staticTexts["Rent Properties"].enabled

or 

app.staticTexts.matchingIdentifier("Rent Properties").count
//take count while showing the text and take the count while not showing the text
  

Ответ №2:

Попробуйте это.

1. Получите статический текст из элемента вместо получения из приложения.

   Eg:`XCUIApplication().navigationBars["Rent Properties"].staticTexts["Rent Properties"]`
  
  1. Используйте elementMatchingPredicate или expectationForPredicate для сопоставления элемента.

Полезная ссылка: http://masilotti.com/ui-testing-шпаргалка /