2017-03-27 21 views
1

私はデバイスのコントロールセンターを開くことができましたが、私はボタンを識別することができません、私はより正確にWi-Fiが必要です。私はレコーダーをしようと、それがXcode UIテストでコントロールセンター要素を識別するにはどうすればよいですか?

app.scrollViews.otherElements.scrollViews.otherElements.switches [「のWi-Fi」]

として識別されますが、私は再度テストを実行しようとすると、それがないと、それが失敗しました要素を見つけられません。 私はまた、他の種類の要素(ボタンまたはすべての種類の棒要素)として見つけようとしましたが、何も機能しません。また、単にラベルを使ってapp.buttons ["Wi-Fi"]を使って識別しようとしましたが、結果は表示されませんでした。

誰にでも解決策がありますか?

+0

あなたは、WiFiボタンを検査するには、Identityインスペクタを使用してみましたか? – Frederik

+0

あなたが最初に表示されるのを待つ必要があるかもしれません。テストが画面に表示される前にその存在をチェックしようとしている可能性があります。 http://masilotti.com/xctest-helpers/ – Hodson

+0

@Frederikがインスペクタを持っていて、その要素が「Wi-Fi」というラベルのボタンであることがわかりました – ioana

答えて

0

コントロールセンターはテスト対象のアプリケーションの範囲外であるため、UIテストではアクセスできません。

無線LANを無効にするには、デバイスをインターネットから物理的に切断する必要があります.Wiiからプログラムで切断することはできません。

+0

フィードバックを送信するために立ち上げられたメールアプリケーションとやりとりすることができたので、コントロールセンターでもうまくいくと思ったのです。それは違った扱いですか? – ioana

+0

アプリを電子メールで開くと、アプリに埋め込まれているので、電子メールは削除されたバージョンになります。あなたのアプリが完全なMailアプリにリンクしていた場合、そのアプリとやりとりすることはできません。 :) – Oletha

+0

私は理解する:)私は質問を閉じるでしょう。テストからWiFi接続をどのように管理するか他の考えですか? – ioana

0

Xcode 9では、コントロールセンターにアクセスできるようになりました(Springboardがコントロールしています)。現在、Xcode 9ベータシミュレータにはコントロールセンターがないため、物理デバイスでのみ可能です。 Xcodeが公式にリリースされたときに修正されるかもしれない。今のところ、実際のデバイスを使用する必要があります。

このテストでは、コントロール・センターを開き、WiFiのボタンをタップする:

func testSwitchOffWiFi() { 
    let app = XCUIApplication() 
    let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard") 

    app.launch() 

    // open control center 
    let coord1 = app.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.99)) 
    let coord2 = app.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5)) 
    coord1.press(forDuration: 0.1, thenDragTo: coord2) 

    let wifiButton = springboard.switches["wifi-button"] 
    wifiButton.tap() 
}