2017-12-14 15 views
2

UI Xcode 8とswift 3.2で開発されたios-appのテスト。Xcode 9でxcode-UIテストの要素をドラッグアンドドロップする方法

私は要素[i.e. button]をドラッグして、別の要素[i.e. on homepage]にドロップしたい9

にXcodeのバージョン8をアップグレードした後、ドラッグに対処し、ドロップする問題に直面しています。

はXcodeの8については、私は方法の下に使用して実装さ:

let sourceElement = app.buttons["Video_Button"] 

let destElement = app.scrollViews.scrollViews.images.element(boundBy: 0) 

sourceElement.press(forDuration: 0.5, thenDragTo: destElement) 

のが、上記のコードでは、Xcodeの9及び迅速3.2で動作していません。

どうすれば解決できますか?どんな助けもありがとうございます。

+0

もう少し説明すれば、それはうまくいかないでしょうか?テストを実行するとどうなりますか? – lagoman

+0

'sourceElement.press(forDuration:0.5、thenDragTo:destElement)'行を実行すると、失敗を返してシステムを終了します。 –

+0

Xcode 9でのみ発生します –

答えて

2

実際に問題はiOS 11.0です。 iOSの11.0で

いくつかの階層の要素がタップまたはプレスまたはlongpressに失敗しました。

あなたはタップまたは押しますまたはlongpressを行うための要素の中心点と仕事をしなければなりません。

** 解決策は以下に貼り付けられています。

まず、要素の中心を押して、この要素を目的の要素の中心にドラッグする拡張メソッドを作成します。

拡張メソッドが

extension XCUIElement { func dragAndDropUsingCenterPos(forDuration duration: TimeInterval, thenDragTo destElement: XCUIElement) { let sourceCoordinate: XCUICoordinate = self.coordinate(withNormalizedOffset: CGVector(dx:0.5, dy:0.5)) let destCorodinate: XCUICoordinate = destElement.coordinate(withNormalizedOffset: CGVector(dx:0.5, dy:0.5)) sourceCoordinate.press(forDuration: duration, thenDragTo: destCorodinate) } } 

以下

で次に

以下
sourceElement.dragAndDropUsingCenterPos(forDuration: 0.5, thenDragTo: destElement) 

のような拡張メソッドを呼び出して、それはあなたの問題を解決することを願っています。あなたのフィードバックを教えてください。

+0

マフムードに感謝し、それは魅力のように動作します。 –

関連する問題