ทดสอบ plupload ด้วย capybara, send_keys ไม่ได้สร้างเหตุการณ์ FilesAdded

ฉันกำลังพยายามทดสอบเหตุการณ์ลากหล่นแบบ plupload ด้วย capybara ขั้นตอนการทำงานปกติคือ

  1. ผู้ใช้คลิก/ (หรือสามารถวางไฟล์) บนพื้นที่อัพโหลด
  2. หน้าต่าง OS ภายในเครื่องจะเปิดขึ้น
  3. คลิกที่ไฟล์ กดตกลง
  4. แนบไฟล์แล้ว
  5. plupload สร้างเหตุการณ์ 'FilesAdded' (ซึ่งใช้เวทย์มนตร์)

ในกรณีของคาปิบารา ต่อไปนี้เป็นขั้นตอน

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

ตอนนี้ขั้นตอนเหล่านี้จะแนบไฟล์ แต่ plupload ไม่ได้สร้างเหตุการณ์ 'FilesAdded' หากมีผู้ประสบปัญหาดังกล่าว โปรดแจ้งให้เราทราบ ขอบคุณ


person hassan_i    schedule 03.10.2016    source แหล่งที่มา
comment
คนขับอะไร? คาปิบาราเวอร์ชั่นไหน? จริงๆ แล้ว '#browse-button' เป็นองค์ประกอบ input[type='file'] หรือไม่ อะไรทำให้คุณบอกว่ามันแนบไฟล์จริง ๆ ? pulpupload กำลังมองหาเหตุการณ์ใดเพื่อกระตุ้นการสร้างเหตุการณ์ 'FilesAdded' ของตัวเอง   -  person Thomas Walpole    schedule 03.10.2016
comment
ซีลีเนียม, capybara (2.7.1), ‹input type=file id=browse-button /›, ลากและวางไฟล์ หรือแนบไฟล์   -  person hassan_i    schedule 03.10.2016


คำตอบ (1)


สมมติว่าคุณกำลังใช้ plupload (เนื่องจากฉันไม่พบโปรเจ็กต์ออนไลน์ที่เรียกว่า pulpulpoad) ดังนั้นจึงกำลังมองหาเหตุการณ์ 'การเปลี่ยนแปลง' ที่จะเริ่มทำงานเพื่อทำให้เกิดการทริกเกอร์เหตุการณ์ FilesAdded ของตัวเอง - https://github.com/moxiecode/plupload/blob/master/js/plupload.dev.js#L1064 . ด้วย Capybara คุณควรโทร

attach_file('browse-button', file)

ซึ่งท้ายที่สุดก็ลงไปที่ send_keys แต่ก่อนหน้านั้นจะมีการตรวจสอบเล็กน้อยเพื่อให้แน่ใจว่าสามารถทำงานได้อย่างถูกต้อง

หากวิธีนี้ใช้ไม่ได้ผลสำหรับคุณและคุณใช้ selenium-driver 2.53.4 และ FF ‹= 47.0.1 คุณจะต้องโพสต์ข้อผิดพลาดที่คุณได้รับและตัวอย่าง html หากคุณใช้ selenium-webdriver 3.xx beta และ FF >= 48 คุณอาจพบข้อผิดพลาดนี้ - https://github.com/mozilla/geckodriver/issues/168 - ซึ่งเห็นได้ชัดว่าได้รับการแก้ไขแล้วใน FF 49.0.1

person Thomas Walpole    schedule 03.10.2016
comment
ฉันใช้ selenium-webdriver (2.53.4), FF (47.0) แต่ที่น่าประหลาดใจของฉันคือแนบไฟล์แสดงพฤติกรรมแบบเดียวกับ send_keys นั่นคือเพียงแนบไฟล์แต่ไม่ได้สร้างกิจกรรม - person hassan_i; 04.10.2016
comment
สมมติว่าคุณหมายถึง FF (47.0.1) แสดงว่าคุณมีตัวจัดการเหตุการณ์ที่กลืนเหตุการณ์การเปลี่ยนแปลงและป้องกันไม่ให้ plupload เห็นมัน หรือคุณมีข้อผิดพลาด JS ในโค้ดของคุณที่ป้องกันไม่ให้ plupload แนบตัวจัดการเหตุการณ์ในครั้งแรก สถานที่ - person Thomas Walpole; 04.10.2016
comment
ฉันเปลี่ยนไดรเวอร์จากซีลีเนียมเป็นโพลเตอร์ไกสต์และทุกอย่างทำงานได้ดี แต่ที่สำคัญกว่านั้นคือคำตอบของทอมเกี่ยวกับการใช้แนบไฟล์แทน send_keys ดังนั้นเลือกสิ่งนี้เป็นคำตอบ ขอบคุณ. - person hassan_i; 17.10.2016