>
拖放Selenium
WebElement source = driver.findElement(By.cssSelector(locator1));
WebElement target = driver.findElement(By.cssSelector(locator2));
Actions act = new Actions(driver);
(选项1)
act.moveToElement(source) .pause(Duration.ofSeconds(1)) .clickAndHold(source)
.pause(Duration.ofSeconds(1)) .moveByOffset(1, 0) .moveToElement(target)
.moveByOffset(1, 0) .pause(Duration.ofSeconds(1)) .release().perform();
System.out.println();
选项2
行为单击并按住(源)。暂停(2000年)。移动到元素(目标)。释放()。build()。执行();
我尝试过这两种选择,我正在开发Selenium 3,有没有其他方法可以实现它。
注:不建议使用机器人类
这是使用操作的拖放功能
public void dragAndDrop(WebElement from, WebElement to) {
Actions action = new Actions(driver);
action.dragAndDrop(from,to).perform();
}
这是使用JSExector:
public void dragAndDrop(WebElement from, WebElement to) {
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("function createEvent(typeOfEvent) {\n" + "var event =document.createEvent(\"CustomEvent\");\n"
+ "event.initCustomEvent(typeOfEvent,true, true, null);\n" + "event.dataTransfer = {\n" + "data: {},\n"
+ "setData: function (key, value) {\n" + "this.data[key] = value;\n" + "},\n"
+ "getData: function (key) {\n" + "return this.data[key];\n" + "}\n" + "};\n" + "return event;\n"
+ "}\n" + "\n" + "function dispatchEvent(element, event,transferData) {\n"
+ "if (transferData !== undefined) {\n" + "event.dataTransfer = transferData;\n" + "}\n"
+ "if (element.dispatchEvent) {\n" + "element.dispatchEvent(event);\n"
+ "} else if (element.fireEvent) {\n" + "element.fireEvent(\"on\" + event.type, event);\n" + "}\n"
+ "}\n" + "\n" + "function simulateHTML5DragAndDrop(element, destination) {\n"
+ "var dragStartEvent =createEvent('dragstart');\n" + "dispatchEvent(element, dragStartEvent);\n"
+ "var dropEvent = createEvent('drop');\n"
+ "dispatchEvent(destination, dropEvent,dragStartEvent.dataTransfer);\n"
+ "var dragEndEvent = createEvent('dragend');\n"
+ "dispatchEvent(element, dragEndEvent,dropEvent.dataTransfer);\n" + "}\n" + "\n"
+ "var source = arguments[0];\n" + "var destination = arguments[1];\n"
+ "simulateHTML5DragAndDrop(source,destination);", from, to);
}
更新:
WebElement a = driver.findElement(By.cssSelector("a:nth-child(1)"));
WebElement b = driver.findElement(By.cssSelector("a:nth-child(2)"));
int x = b.getLocation().x;
int y = b.getLocation().y;
Actions actions = new Actions(driver);
actions.moveToElement(a)
.pause(Duration.ofSeconds(1))
.clickAndHold(a)
.pause(Duration.ofSeconds(1))
.moveByOffset(x, y)
.moveToElement(b)
.moveByOffset(x,y)
.pause(Duration.ofSeconds(1))
.release().build().perform();
拖放操作不适用于selenium 3.8。 下面是该元素的JS代码 这就是我尝试过的。但这只是选择元素。保持和放弃是不会发生的。 我也试过这个。 也尝试过机器人。每次我只能看到源元素和目标元素都被选中。但不是被拖拽掉的。 还尝试了dragAndDrop ActionsChain。那也没用。
我试图使用HTML5拖放在我的网站。dragstart和dragend被解雇,但dragenter,draglet,dragover和下降不工作,直到我刷新页面。 侧边栏中树中的节点应该能够拖动到表中的单元格。树是用jsTree制作的。我已经在火狐、Chrome和IE上尝试过了。他们都有相同的行为。 边栏树(rhtml文件) 删除操作代码(咖啡脚本文件) 表(页面来源) 我试着拉小提琴,但效果很好
我正在使用Selenium和Java自动化拖放。以下是在无头模式下使用chrome驱动程序执行拖放的代码。 在无头chrome驱动程序中执行时不会发生任何情况。但是,在非无头chrome驱动程序中,这可以正常工作并执行拖放。 注意-同时使用dragAndDropBy(源、目标)和dragAndDropBy(源、xOffset、yOffset)进行了尝试。这两种方法在非无头chrome中也不起作用
在安装了最新浏览器的情况下使用Selenium w/Java绑定和ChromeDriver 2.3 在花了足够多的时间试图找到一个解决方案后,我现在被难倒了。我正在尝试将一个元素拖放到另一个元素。唯一需要注意的是,我需要移动到的元素目标只有在移动源元素后才可见。有什么建议吗? 因此,这里是我点击并按住的源元素的屏幕截图,然后拖动它,我也可以删除两个选项: 元素是源 因此,当我按住鼠标并拖动一小部分
在最新版本的chrome 91上,使用Selenium Action类或java脚本拖放元素不起作用。我尝试了所有可能的情况,例如使用以下方法 Javascript方法进行拖放 Java脚本方法1 Java脚本方法2: 使用jQuery方法。JQuery 使用机器人类。 使用Selenium Touch动作。 但没有一个解决方案对我有效。拖放是在之前的chrome版本89上进行的。 在此输入图像描
问题内容: 我是Android开发领域的新手,我已经下载并安装了Android SDK,但找不到任何GUI或Form设计器,可以有人知道Android中的某些Form设计器吗,谢谢。 问题答案: 如d。正确提到的内置设计器并不能真正代表您的观点。而且,如果我们牢记即使经过4年的尝试,Microsoft对其XAML代码的等效性仍未达到最低使用水平,所以我强烈建议您手动进行操作。它更快,更困难但同样有