Selenium webdriver (java): ปัญหาการลากและวาง

แอปพลิเคชัน: Adobe CQ5 - อินสแตนซ์ผู้เขียน

งาน : ลากรูปภาพจาก content-dam และวางลงในกล่องโต้ตอบรูปภาพของ CQ5

ภาษาที่ใช้: Java + Selenium WebDriver 2.40

ฉันกำลังพยายามดำเนินการลากและวางเพื่อให้บรรลุภารกิจข้างต้น ปัญหาที่นี่คือต้นทางและปลายทางอยู่ในบานหน้าต่างที่แตกต่างกันสองบาน (รูปภาพต้นฉบับในเนื้อหา Dam และปลายทางคือกล่องโต้ตอบ html)

ประสบปัญหา:

  1. การคลิกรูปภาพค้างไว้ - ทำงานได้ดี
  2. เคลื่อนตัวสู่จุดหมาย - ทำงานได้ดี
  3. การปล่อยภาพบนปลายทาง - FAILS

ป้อนคำอธิบายรูปภาพที่นี่‹>

องค์ประกอบปลายทางจะแสดงและพร้อมใช้งาน (เมื่อตรวจสอบจากดีบักเกอร์) ฉันพยายามเปลี่ยนไปใช้องค์ประกอบที่ใช้งานอยู่/เนื้อหาเริ่มต้น ปลายทางไม่อยู่ในเฟรม/iframe ใด ๆ

ใช้งานได้ไม่กี่วันก่อน (เวอร์ชัน Selenium 2.36 เวอร์ชันเก่ากว่า) แต่ตอนนี้มันล้มเหลวกับเวอร์ชันล่าสุด (และเวอร์ชันเก่าด้วย)

ฉันขาดอะไรไปที่นี่? ฉันไม่เข้าใจว่าทำไม webdriver จึงไม่ปล่อยอิมเมจจากการควบคุมที่ปลายทาง

ขอบคุณล่วงหน้า.


person Praveen    schedule 02.06.2014    source แหล่งที่มา
comment
คุณได้รับข้อยกเว้นหรือไม่? มันล้มเหลวอย่างเงียบ ๆ เหรอ? โปรดแสดงให้เห็นว่าคุณพยายามโต้ตอบกับองค์ประกอบต่างๆ อย่างไร แม้ว่าจะเป็นเรื่องง่ายก็ตาม   -  person toniedzwiedz    schedule 03.06.2014
comment
สวัสดีทอม ไม่มีข้อผิดพลาด ไม่มีความล้มเหลว มันแค่เก็บภาพไว้และไม่ปล่อยมันไปที่ปลายทาง   -  person Praveen    schedule 03.06.2014
comment
ฉันสามารถแสดงรหัสได้ภายในสองสามชั่วโมง.. ฉันมีมันอยู่บนเครื่องที่ทำงานของฉัน ฉันสามารถเพิ่มตัวอย่างได้พรุ่งนี้เช้า ขออภัยและขอบคุณสำหรับความสนใจของคุณ   -  person Praveen    schedule 03.06.2014
comment
สวัสดีทอม โปรดดูภาพหน้าจอที่แนบมาของรหัสและแอปพลิเคชันที่แสดงต้นทางและปลายทาง บรรทัดที่เพิ่มเบรกพอยต์คือโค้ดสำหรับปล่อยอิมเมจ ซึ่งไม่ทำงานตามที่คาดไว้   -  person Praveen    schedule 04.06.2014


คำตอบ (1)


ฉันเคยมีปัญหานี้มาก่อน ฉันใช้เวอร์ชัน 2.42.2 สิ่งที่ฉันทำคือเปลี่ยนไปใช้ Iframe ก่อนที่จะเผยแพร่ นี่คือตัวอย่าง

WebElement sourceElement = mySourceElement;
Actions builder = new Actions(driver);
Action dragAndDrop = builder.clickAndHold(sourceElement).build();
dragAndDrop.perform();
driver.switchTo().frame(iFrame);
WebElement targetElement = myTargetElement;
Thread.sleep(1000);
dragAndDrop = builder.moveToElement(targetElement).release().build();
   dragAndDrop.perform();
person andyssundaypink    schedule 23.07.2014
comment
ขอบคุณสำหรับข้อมูลเพื่อน ให้ฉันลองสิ่งนี้ (อันที่จริงนี่เป็นแนวทางเดียวกันแม้ว่าฉันจะลองแล้วแต่ไม่ได้ผล ฉันขอลองอีกครั้ง ขอบคุณอีกครั้ง - person Praveen; 24.07.2014
comment
สวัสดี คุณลองใช้รหัสนี้ในเบราว์เซอร์ใด ฉันลองใน FF แล้ว แต่ลองใน Chrome แล้ว แต่มันไม่ทำงาน มีข้อบกพร่องในไดรเวอร์ Chrome เอง - person andyssundaypink; 12.09.2014
comment
ใช่ คุณพูดถูก.. มีข้อบกพร่องเล็กน้อยในไดรเวอร์ Chrome สังเกตเห็นปัญหาดังกล่าวอีกเล็กน้อยกับ Chrome เท่านั้น - person Praveen; 14.09.2014