Cara mengambil data variabel dari label dalam pengujian UI

Inilah yang saya miliki sejauh ini dan saya hanya mencoba mendapatkan hasil yang ditampilkan dalam label dan mengujinya terhadap hasil yang ditetapkan:

func testExample() {

    let app = XCUIApplication()
    let enterRomanNumeralsHereTextField = app.textFields["Enter roman numerals here"]
    enterRomanNumeralsHereTextField.tap()
    let convertButton = app.buttons["Convert"]

    //1
    enterRomanNumeralsHereTextField.typeText("LL")
    convertButton.tap()
    XCTAssertTrue(app.staticTexts.element(matching:.any, identifier: "Roman Numerals").label == "NotValidRomanNumber")


    //2
    enterRomanNumeralsHereTextField.typeText("LXXXIX")
    convertButton.tap()
    XCTAssertEqual(app.otherElements.containing(.staticText, identifier:"Roman Numerals").element.value as! String, "89")

    //3
    enterRomanNumeralsHereTextField.typeText("")
    enterRomanNumeralsHereTextField.typeText("LXXVIII")
    convertButton.tap()
    XCTAssertEqual(app.otherElements.containing(.staticText, identifier:"Roman Numerals").element.value as! String, "")



    // Use recording to get started writing UI tests.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
}

Upaya pertama (berlabel 1) memberi saya kesalahan pembuatan yang mengatakan "tidak dapat memanggil nilai elemen XCUIE tipe non-fungsi. Upaya kedua membuat tetapi pengujian gagal karena meskipun label memang menghasilkan nilai yang benar, pengujian membaca label sebagai blank yang membawa kita ke percobaan ketiga saya yang lulus ujian karena saya membandingkannya dengan label kosong, itulah yang ditampilkannya.

Jadi seperti yang saya katakan di atas, saya hanya ingin tahu bagaimana sebenarnya cara mengambil nilai label yang merupakan hasil dari "perhitungan" atau penekanan tombol.


person KoolaidLips    schedule 31.05.2017    source sumber


Jawaban (1)


Sayangnya ketika UILabel diakses di UITest, properti value XCUIElement tidak disetel dengan properti text dari UILabel. Itu selalu kosong.

XCUIElement juga memiliki properti label yang dapat Anda gunakan untuk tujuan Anda. Anda hanya perlu memastikan bahwa Anda tidak menyetel accessibilityLabel pada UILabel Anda. Gunakan accessibilityIdentifier sebagai gantinya:

Di aplikasi Anda:

label.accessibilityIdentifier = "Roman Numerals"

Di Tes UIT Anda:

XCTAssertEqual(app.staticTexts.element(matching:.any, identifier: "Roman Numerals").label, "89")
person joern    schedule 10.06.2017
comment
Saya benar-benar mendapat banyak masalah dengannya. Terima kasih. - person andrei; 01.11.2017
comment
@joem Bagaimana Anda mengetahui properti mana yang akan digunakan ?? - person tomkaith13; 13.01.2018
comment
@ tomkaith13 Saya telah melihat ˋXCUIElementAttributesˋ yang sesuai dengan ˋXCUIElementˋ. Protokol tersebut mendefinisikan atribut yang diekspos untuk semua elemen UI. Lalu saya baru saja melihat nilai atribut tersebut jika Anda menanyakan ˋLabel UILˋ. - person joern; 13.01.2018
comment
@joem Terima kasih banyak. Saya akan melihat ke sana ketika saya terjebak juga - person tomkaith13; 13.01.2018