硒网络驱动程序 |拖放功能 |没有例外,但代码不起作用



我正在尝试将徽标拖放到容器中,但没有得到异常。我能够找到元素,并且相同的拖放代码适用于具有其他元素的另一个站点。但不知道为什么这在这里不起作用。任何人都可以协助。

// Searching elements 
driver.get(https://www.w3schools.com/html/tryit.asp?ilename=tryhtml5_draganddrop");
driver.switchTo().frame(driver.findElement(By.name("iframeResult")));
driver.manage().timeouts().implicitlyWait(10000, TimeUnit.MILLISECONDS);
WebElement From = driver.findElement(By.id("drag1"));
WebElement To = driver.findElement(By.id("div1"));
//Drag and Drop Action
Actions builder = new Actions(driver);
Action DragnDrop = builder.clickAndHold(From).moveToElement(To).release(To).build();
DragnDrop.perform();

根据我的经验,为了实现更稳定的拖放操作,我们从操作实现切换到 JavaScript 实现。是的,它可能看起来像一个黑客,但测试结果的持续假阴性使我们衡量风险并使用 js impl。(我们没有从头开始创建脚本,只是应用了互联网上的多个建议(

您可以将其用于您的案例,添加下面的代码而不是您使用的操作。

driver.executeScript("function dnd(elemDrag, elemDrop) {n" +
"    var DELAY_INTERVAL_MS = 100;n" +
"    var MAX_TRIES = 10;n" +
"    var dragStartEvent;n" +
"    if (!elemDrag || !elemDrop) {n" +
"        return false;n" +
"    }n" +
"    function fireMouseEvent(type, elem, dataTransfer) {n" +
"        var evt = document.createEvent('MouseEvents');n" +
"        evt.initMouseEvent(type, true, true, window, 1, 1, 1, 0, 0, false, false, false, false, 0, elem);n" +
"        if (/^dr/i.test(type)) {n" +
"            evt.dataTransfer = dataTransfer || createNewDataTransfer();n" +
"        }n" +
"        elem.dispatchEvent(evt);n" +
"        return evt;n" +
"    }n" +
"    function createNewDataTransfer() {n" +
"        var data = {};n" +
"        return {n" +
"            clearData: function (key) {n" +
"                if (key === undefined) {n" +
"                    data = {};n" +
"                } else {n" +
"                    delete data[key];n" +
"                }n" +
"            },n" +
"            getData: function (key) {n" +
"                return data[key];n" +
"            },n" +
"            setData: function (key, value) {n" +
"                data[key] = value;n" +
"            },n" +
"            setDragImage: function () {n" +
"            },n" +
"            dropEffect: 'none',n" +
"            files: [],n" +
"            items: [],n" +
"            types: []n" +
"        }n" +
"    }n" +
"    fireMouseEvent('mousedown', elemDrag);n" +
"    dragStartEvent = fireMouseEvent('dragstart', elemDrag);n" +
"    function dragover() {n" +
"        fireMouseEvent('dragover', elemDrop, dragStartEvent.dataTransfer);n" +
"    }n" +
"    function drop() {n" +
"        fireMouseEvent('drop', elemDrop, dragStartEvent.dataTransfer);n" +
"        fireMouseEvent('mouseup', elemDrop);n" +
"        fireMouseEvent('dragend', elemDrag);n" +
"    }n" +
"    setTimeout(dragover, DELAY_INTERVAL_MS);n" +
"    setTimeout(drop, DELAY_INTERVAL_MS * 2);n" +
"    return true;n" +
"}n" +
"   dnd(arguments[0], arguments[1])", From, To)

来源: https://github.com/WileyLabs/teasy/blob/master/src/main/java/com/wiley/utils/JsActions.java

附言您的问题的链接中有错别字。(而不是"asp?Ilename"应该是"ASP?文件名(

相关内容

最新更新