selenium-webdriver - 硒拖放方法在chrome浏览器上不起作用
问题描述
从 selenium IDE 导出的全功能拖放方法无法正常工作webDriver
。
webDriver 上的测试通过而没有执行任何操作。chrome 的版本是75.0.3770.100
. selenium webDriver 的版本是 3.141.59。selenium IDE 是一个 chrome 扩展。该应用程序是HTML5
reactJS
public void dragAndDrop(By by1, By by2) {
WebElement from = driver.findElement(by1);
WebElement to = driver.findElement(by2);
Actions actions = new Actions(driver);
actions.dragAndDrop(from,to).perform();
}
执行-
dragAndDrop(By.cssSelector(".py-1:nth-child(3)"), By.cssSelector(".jss11amios > div"));
解决方案
找到了解决方案-
public void dragAndDrop(By by1, By by2) {
WebElement From = driver.findElement(by1);
WebElement To = driver.findElement(by2);
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("function createEvent(typeOfEvent) " +
"{var event =document.createEvent(\"CustomEvent\");" +
"event.initCustomEvent(typeOfEvent,true, true, null);" +
"event.dataTransfer = {data: {},setData: function (key, value) {this.data[key] = value;}," +
"getData: function (key) {return this.data[key];}};" +
"return event;}" +
"function dispatchEvent(element, event,transferData) {if (transferData !== undefined)" +
" {event.dataTransfer = transferData;}" +
"if (element.dispatchEvent) {element.dispatchEvent(event);} " +
"else if (element.fireEvent) {element.fireEvent(\"on\" + event.type, event);}}" +
"function simulateHTML5DragAndDrop(element, destination) " +
"{" +
"var dragStartEvent =createEvent('dragstart');" +
"dispatchEvent(element, dragStartEvent);" +
"var dropEvent = createEvent('drop');" +
"dispatchEvent(destination, dropEvent,dragStartEvent.dataTransfer);" +
"var dragEndEvent = createEvent('dragend');" +
"dispatchEvent(element, dragEndEvent,dropEvent.dataTransfer);" +
"}" +
"var source = arguments[0];" +
"var destination = arguments[1];" +
"simulateHTML5DragAndDrop(source,destination);", From, To);
}
推荐阅读
- google-cloud-platform - 数据准备作业失败
- android - StringIndexOutOfBoundsException:字符串索引超出范围:使用“Android Layout Inspector”时
- python-2.7 - Mayan EDMS 无法在浏览器上运行,但 Nginx 和 Supervisor 已启动并正在运行
- sql - 带有开关表达式 SSRS 的日期格式
- python - .map 与 defaultdict 的使用
- python - 多个 .shift() 操作相互覆盖
- symfony - 在 symfony 中访问存储库
- java - 如何在 spring-mvc 应用程序中设置动态日志级别?
- android - Ionic 3 上的 OneSignal 推送通知:未订阅所有包含的播放器
- scala - 带有 Option/Some 的 scala Map 给出匹配错误