Menguji Aplikasi iOS di Simulator dengan Appium - Elemen Tidak Ditemukan

Saya menggunakan klien Appium untuk merekam dan membuat skrip pengujian untuk Aplikasi iOS saya. Di App Inspector, saya dapat mengetuk tombol login dan membuat skrip (dengan python) seperti di bawah ini:

els1 = driver.find_elements_by_accessibility_id("login")
els1[0].click()

Saya berhasil masuk ke aplikasi saya dengan mengetuk tombol di App Inspector namun saya mendapat kesalahan saat menjalankan skrip di terminal mac:

els3[0].klik()

IndexError: daftar indeks di luar jangkauan

Saya mencoba berbagai cara untuk mengakses elemen tombol dengan menggunakan accessibility id, name dan class name, tetapi tidak ada cara di atas yang berhasil.

Apa yang saya lewatkan? Apakah ini bug pada perangkat lunak Appium?


person devdork    schedule 24.08.2018    source sumber


Jawaban (2)


Kesalahan "IndexError: indeks daftar di luar jangkauan" muncul jika kita mencoba mengakses daftar pada indeks yang tidak ada di dalam rentang daftar

e.g.

thislist = ["apple", "banana", "cherry"] // here list index range is 0-2
thislist[1] = "blackcurrant" // this works fine as value of index is in range 0-2

Namun jika saya coba dibawah ini

// this is run time error i.e. "IndexError: list index out of range"
//  as value of index is out of range 0-2
    thislist[3] = "blackcurrant" 

Catatan: Indeks Daftar dimulai dengan 0

Pertimbangkan kasus di mana metode find_elements_by_accessibility_id("login") tidak mengembalikan elemen apa pun karena alasan apa pun

els1 = driver.find_elements_by_accessibility_id("login");

Dan saya mencoba mengakses List els1 pada indeks 0 yang kosong sehingga saya mendapatkan error "IndexError: list index out of range"

Sekarang sebelum mengakses List kita akan memeriksa apakah List in tidak kosong

els1 = driver.find_elements_by_accessibility_id("login")
if els1:
   els1[0].click()
else :
   print "Element not found and els1 array is empty"        
person Amit Jain    schedule 24.08.2018
comment
Meskipun kode ini mungkin menjawab pertanyaan, memberikan konteks tambahan mengenai bagaimana dan/atau mengapa kode ini memecahkan masalah akan meningkatkan nilai jawaban jangka panjang. - person Nic3500; 25.08.2018
comment
Apakah ada cara untuk mengakses elemen dengan benar agar daftarnya tidak kosong? - person devdork; 27.08.2018
comment
Daftar akan kosong atau tidak tergantung pada strategi pencari lokasi, kita selalu dapat memeriksa ukuran daftar sebelum mengklik elemen, untuk menghindari pengecualian pada koleksi (Daftar) yang kita gunakan untuk menyimpan elemen - person Amit Jain; 27.08.2018

Setelah berjam-jam googling dan mencoba, saya menemukan bahwa masalahnya adalah tentang penyegaran tampilan.

Setiap kali terjadi transisi tampilan atau navigasi, diperlukan waktu untuk memperbarui tampilan. Setelah semuanya diperbarui, webDriver berhasil mengidentifikasi elemen menggunakan parameter pencarian yang diberikan.

Jadi di antara setiap interaksi, tunggu sebentar:

el1 = driver.find_element_by_accessibility_id("login")
el1.click()
// wait for the view to get updated
driver.implicitly_wait(1)

els2 = driver.find_elements_by_name("Edit")
els2[0].click()

Dan skrip akan berjalan sesuai harapan.

person devdork    schedule 29.08.2018