После просмотра видеороликов WWDC Xcode 2017 и XCTest я обновил свои тесты до использовать последние дополнения в XCTests.
Недавно я обновился до бета-версии Xcode 9, работающей под управлением OS X Sierra 10.12.4.
После этого все тесты, в которых я использовал XCUIElement() для создания экземпляра элемента, завершились неудачей. .
Пример строки кода: XCTAssertTrue(XCUIElement().scrollToElement(tablesQuery.cells.staticTexts["Featured"]).exists)
Я получаю сообщение об ошибке: 'init()' недоступен: используйте XCUIElementQuery для создания экземпляров XCUIElement.
Если вам интересно, что такое scrollToElement(), это пользовательская функция для прокрутки к запрашиваемому элементу, если он не отображается в текущем представлении. Это часть пользовательского расширения XCUIElement, которое я написал.
Как часть решения, можете ли вы предложить: Как сейчас предполагается создавать экземпляры XCUIElement?
Для справки: scrollToElement()
open func scrollToElement(_ element: XCUIElement) -> XCUIElement {
while !element.visible() {
swipeUp()
}
return element
}
open func visible() -> Bool {
guard self.exists && !self.frame.isEmpty else { return false }
return XCUIApplication().windows.element(boundBy: 0).frame.contains(self.frame)
}
Любая помощь приветствуется!
XCUIElement
? Я думаю, вам следует сделатьscrollToElement
статическим методом. - person AdamPro13   schedule 16.06.2017scrollToElement
я использую методswipeUp()
из XCUIElement, поэтому его нельзя сделать статическим. - person nChetan   schedule 16.06.2017XCUIElement
, потому что они сопоставляются с существующими элементами пользовательского интерфейса. Если вы создали элемент, не связанный с пользовательским интерфейсом, вы ничего не сможете с ним сделать, потому что он ничего не знает. - person AdamPro13   schedule 16.06.2017XCUIApplication
. - person nChetan   schedule 17.06.2017