如何正确模拟硒中的拖放

Posted

技术标签:

【中文标题】如何正确模拟硒中的拖放【英文标题】:How to properly simulate drag and drop in selenium 【发布时间】:2015-02-05 21:35:54 【问题描述】:

我正在做一个执行拖放的测试。

我目前的代码:

WebElement element;
By mainSelector, secondarySelector;
Actions action;

action = new Actions(driver);

mainSelector = By.cssSelector("tbody.naam tr:nth-child(1) td:nth-child(1)");
secondarySelector = By.cssSelector("tbody.bedrijf tr:nth-child(1) td:nth-child(1)");

action.click(driver.findElement(mainSelector));

action.clickAndHold(driver.findElement(mainSelector))
    .moveToElement(driver.findElement(secondarySelector), 5, 5)
    .perform();
action.release(driver.findElement(secondarySelector));

action.perform();

action.dragAndDropBy(driver.findElement(mainSelector), 300, 300).perform();

action.dragAndDrop(driver.findElement(mainSelector), driver.findElement(secondarySelector)).perform();

但这并没有做任何事情。 我已经添加了多个执行,所以请确保这不是问题。 我添加了一个偏移量,因为我读到这有时是错误的。 我使用Firefox进行测试。

【问题讨论】:

请检查:***.com/questions/14210051/… 【参考方案1】:

如果你想把mainSelector拖到secondarySelector,你可以这样做

Method 1

mainSelector = driver.findElement(By.cssSelector("tbody.naam tr:nth-child(1) td:nth-child(1)"));
secondarySelector = driver.findElement(By.cssSelector("tbody.bedrijf tr:nth-child(1) td:nth-child(1)"));

action = new Actions(driver)
action.dragAndDrop(mainSelector, secondarySelector).perform();

Method 2

action.clickAndHold(mainSelector).moveToElement(secondarySelector).release().build().perform();

这两种方法都可以完成任务。

希望对您有所帮助! :)

【讨论】:

dragAndDrop 函数只接受 WebElements 对吗?不是By 选择器? 我已将它添加到尝试列表中,但很遗憾,它对我不起作用。 @Funonly :你能展示你的完整实现吗? @Rupesh 你的意思是javascript

以上是关于如何正确模拟硒中的拖放的主要内容,如果未能解决你的问题,请参考以下文章

如何模拟酶测试用例中的拖放?

如果图像是链接,如何从拖放中获取图像 URL?

Qt拖放中的热点是啥意思?

如何在 mousedown 元素之外捕获 mouseup 事件? (即正确的拖放?)

如何在拖放中停止 dragend 的默认行为?

使用 .Net 检测外部应用程序中的拖放操作