menguji plupload dengan capybara, send_keys tidak menghasilkan acara FilesAdded

Saya mencoba menguji acara drag drop plupload dengan capybara. Alur kerja normal adalah

  1. klik pengguna/ (atau dapat menjatuhkan file) di area unggah
  2. jendela OS lokal terbuka
  3. klik pada file, tekan ok
  4. file terlampir
  5. plupload menghasilkan acara 'FilesAdded' (yang menghasilkan keajaiban)

Sekarang dalam kasus kapibara berikut langkah-langkahnya

filename = '/Users/name/full/path/file.pdf'
visit upload_document_path
element = find('#browse-button')
value = element.send_keys file

sekarang langkah-langkah ini melampirkan file tetapi plupload tidak menghasilkan acara 'FilesAdded' jika seseorang menghadapi masalah seperti itu tolong beri tahu saya, Terima kasih.


person hassan_i    schedule 03.10.2016    source sumber
comment
Sopir apa? Kapibara versi berapa? Apakah '#browse-button' sebenarnya merupakan elemen input[type='file']? Apa yang membuat Anda mengatakan itu sebenarnya melampirkan file? Peristiwa apa yang dicari pulpupload untuk memicu pembuatan peristiwa 'FilesAdded' sendiri?   -  person Thomas Walpole    schedule 03.10.2016
comment
Selenium, capybara (2.7.1), ‹tipe input=id file=tombol penelusuran /›, seret-letakkan file atau lampirkan file   -  person hassan_i    schedule 03.10.2016


Jawaban (1)


Dengan asumsi Anda menggunakan plupload (karena saya tidak dapat menemukan proyek apa pun secara online yang disebut pulpulpoad) maka ia mencari acara 'perubahan' untuk diaktifkan sehingga menyebabkan pemicu acara FilesAdded-nya sendiri - https://github.com/moxiecode/plupload/blob/master/js/plupload.dev.js#L1064 . Dengan Capybara Anda harus menelepon

attach_file('browse-button', file)

yang pada akhirnya bermuara pada send_keys, namun sebelum itu lakukan beberapa pemeriksaan untuk memastikannya dapat berfungsi dengan baik.

Jika itu tidak berhasil untuk Anda dan Anda menggunakan selenium-driver 2.53.4 dan FF ‹= 47.0.1 maka Anda perlu memposting kesalahan yang Anda dapatkan dan contoh htmlnya. Jika Anda menggunakan Selenium-webdriver 3.xx beta dan FF >= 48 maka Anda mungkin mengalami bug ini - https://github.com/mozilla/geckodriver/issues/168 - yang tampaknya diselesaikan di FF 49.0.1

person Thomas Walpole    schedule 03.10.2016
comment
Saya menggunakan Selenium-webdriver (2.53.4), FF (47.0) tetapi yang mengejutkan saya, attachment_file menunjukkan perilaku yang sama seperti send_keys yaitu hanya melampirkan file tetapi tidak membuat acara. - person hassan_i; 04.10.2016
comment
Dengan asumsi yang Anda maksud adalah FF (47.0.1) maka Anda memiliki pengendali peristiwa yang menelan peristiwa perubahan dan mencegah plupload melihatnya, atau Anda memiliki kesalahan JS dalam kode Anda yang mencegah plupload melampirkan pengendali peristiwanya terlebih dahulu tempat - person Thomas Walpole; 04.10.2016
comment
Saya mengubah driver saya dari Selenium menjadi poltergeist dan semuanya berfungsi dengan baik tetapi yang lebih penting adalah jawaban Tom tentang penggunaan attachment_file alih-alih send_keys, jadi pilih ini sebagai jawaban. Terima kasih. - person hassan_i; 17.10.2016