2015-12-21 24 views
6

アクションエクステンションターゲットでUIテストを実行できますか? Action Extensionを「テスト対象」としてUIテストターゲットを作成できません。UIテストを使用したアクションエクステンションのテスト

app.icons["Safari"].tap()

私は、次のことができます。私は私の相互作用を記録した場合、私は限り取得することができます(サファリ/両方が好まれるが、または写真)のSafari内からアクション拡張をロードするために

をしようとしています生成されたコードの前に

XCUIDevice.sharedDevice().pressButton(.Home)

が、予想通り、それは(シミュレータは、ホーム画面に残っている)動作しません。手動で追加します。

私も試してみました:

UIApplication.sharedApplication().openURL(NSURL(string: "https://google.com")!)

もサファリを開かないことを。

アクションエクステンションで自動化されたインタラクティブな操作ができるかどうかはわかりませんが、うまくいけば可能です。

+0

私はまた、アクション拡張をUIテストしようとしています – BHendricks

答えて

2

XCUITestでアプリを切り替えることは可能ですが、ドキュメント化されていません。 Facebook's WebDriverAgentをチェックアウトすると、ヘッダダンプを行い、踏み台からの起動のためのヘルパーを作った。

XCUIApplication* safari = [[XCUIApplication alloc] initWithPrivatePath:nil bundleID:@"com.apple.safari"]; 

[safari launch]; 

あなたのアプリと同じようにSafariと対話することができます。しかし、私はXCUITestが実際に拡張機能自体を起動しないという同様の問題に遭遇しました。テストが実行されている間に拡張機能ボタンを物理的にタップすると、テストランナーは完全に機能し、アプリと同じコンテキストで拡張機能を操作できます。しかし、テストランナーに拡張機能を起動させることは何もしません。私はApple Dev Forum questionもこのトピックについて行っています。

更新

それはあなたがボタンの場所で画面を押してアプリを使用する場合、拡張子がロードされますと、あなたはそれと対話することができ判明!座標をタッピングするためのAPIは非常に厄介であることに注意してください。 x、yは座標を作成したもののフレームの乗数です。関連のサンプルコード:

// app is your XCUIApplication 
// In this case we are tapping in the horizontal middle and at the y coordinate 603 (this is for a 6+ screen size) 
XCUICoordinate* coordinateOfRowThatLaunchesYourExtension = [app coordinateWithNormalizedOffset:CGVectorMake(0.5, 603.0/736.0)]; 
[coordinateOfRowThatLaunchesYourExtension tap]; 

Appleの拡張ピッカーが呼び出された後にこれは、アクションシートであなたの拡張機能のボタンを押します。 XCUITestで何らかの理由で/バグがあっても、単にアクションシートであなたのアプリを押しても機能しません:

関連する問題