Tôi đang cố kéo phần tử vào phần tử khác bằng Selenium WebDriver nhưng nó không hoạt động. Tôi đã thử tất cả các giải pháp mà tôi có thể tìm thấy trên internet nhưng không có giải pháp nào có vẻ hiệu quả đối với tôi.Tại sao kéo và thả không hoạt động trong Trình quản lý trang web Selenium?
WebElement sourceelement = driver.findElement(By.cssSelector("XXX"));
WebElement destelement = driver.findElement(By.cssSelector("YYY"));
Code1: -
Actions builder = new Actions(_controls.getDriver());
builder.dragAndDrop(sourceelement, destelement);
code2: -
Actions builder = new Actions(_controls.getDriver());
Action dragAndDrop =
builder.clickAndHold(sourceelement).moveToElement(destelement).release(destelement).build();
Thread.sleep(2000);
dragAndDrop.perform()
Code3: -
Point coordinates1 = sourceelement.getLocation();
Point coordinates2 = destelement.getLocation();
Robot robot = new Robot();
robot.mouseMove(coordinates1.getX(), coordinates1.getY());
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(coordinates2.getX(), coordinates2.getY());
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(2000);
Code4: -
final String java_script =
"var src=arguments[0],tgt=arguments[1];var dataTransfer={dropEffe" +
"ct:'',effectAllowed:'all',files:[],items:{},types:[],setData:fun" +
"ction(format,data){this.items[format]=data;this.types.append(for" +
"mat);},getData:function(format){return this.items[format];},clea" +
"rData:function(format){}};var emit=function(event,target){var ev" +
"t=document.createEvent('Event');evt.initEvent(event,true,false);" +
"evt.dataTransfer=dataTransfer;target.dispatchEvent(evt);};emit('" +
"dragstart',src);emit('dragenter',tgt);emit('dragover',tgt);emit(" +
"'drop',tgt);emit('dragend',src);";
((JavascriptExecutor)_controls.getDriver()).executeScript(java_script, sourceelement, destelement);
Thread.sleep(2000);
Không có mã nào ở trên đang hoạt động đối với tôi. Tất cả các hoạt động trên không có bất kỳ lỗi nào nhưng việc kéo và thả không xảy ra trong ứng dụng. Bất cứ ai có bất kỳ giải pháp khác? Cảm ơn.
Bạn đang thử tính năng này cho HTML5? – Grasshopper
Bắt đầu với trong trang nguồn Xem. Vì vậy, có nó là trang html5. – Naseem
Hãy xem xét điều này - http://stackoverflow.com/questions/29381233/how-to-simulate-html5-drag-and-drop-in-selenium-webdriver. Ai đó thậm chí đã tạo ra một github với mã java tương ứng. – Grasshopper