2017 WWDC XcodeとXCTestビデオを見た後、私はXCTestsに最新の追加を使用するように私のテストを更新しました。Xcodeの9:どのようにXCUIElementQueryを使用してXCUIElementインスタンスを作成するには?
私は最近、この後OS Xシエラ10.12.4
を走っ、Xcodeの9のベータ版にアップグレードし、私は要素のインスタンスを作成するためにXCUIElementを()を使用し、すべてのテストが、失敗しました。
例コード行: XCTAssertTrue(XCUIElement()scrollToElement(tablesQuery.cells.staticTexts [ "おすすめ"])が存在する。)これは私が取得エラーである
: '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'を静的メソッドにするべきだと思います。 – AdamPro13
@ AdamPro13良いアイデアだが、 'scrollToElement'の中で私はXCUIElementから' swipeUp() 'メソッドを使用しているので、静的にすることはできません。彼らはUI内の既存の要素にマップするため – nChetan
あなただけXCUIElement' 'のインスタンスをインスタンス化することはできません。 UIに関連付けられていない要素を作成した場合は、何も知らないため何もできません。 – AdamPro13