当前位置: 首页 > 知识库问答 >
问题:

无法使用Selenium对元素执行拖放操作

葛嘉悦
2023-03-14

我试图在元素上执行拖放操作,但它没有发生。

这是我正在处理的页面的片段。在这里,我试图将磁贴“时间”拖动并放置在磁贴“批准”的位置。截图

这是我正在使用的代码。

代码

String sSource = "//*[@id=\"PTNUI_LAND_REC14$1_row_0"]";
String sTarget = "//*[@id=\"PTNUI_LAND_REC14$1_row_1"]";
WebElement wSource = TestBase.wDriver.findElement(By.xpath(sSource));
WebElement wTarget = TestBase.wDriver.findElement(By.xpath(sTarget));
Actions aActions = new Actions(TestBase.wDriver);
Action aDragAndDrop = aActions.clickAndHold(wSource).moveToElement(wTarget).release(wTarget).build();
aDragAndDrop.perform();

超文本标记语言

源元素

    <div class="ps_grid-row nuitile rsz_w1 rsz_h1" id="PTNUI_LAND_REC14$1_row_0" tx="1.0577777777777777" ty="1" gx=".1.0577777777777777." gy=".1.">
    <div class="ps_grid-cell">
    <div id="win0divPTNUI_LAND_REC_GROUPLET$13" class="ps_box-group psc_layout nuilp " tabindex="0" draggable="true" aria-dropeffect="move" aria-grabbed="false" droppable="true">
    <h2 class="ps_groupleth"><span class="ps-label" id="PTNUI_LAND_REC_GROUPLET_LBL$13">Approvals</span></h2>

目标元素

<div class="ps_grid-row nuitile rsz_w1 rsz_h1" id="PTNUI_LAND_REC14$1_row_1" tx="2.057777777777778" ty="1" gx=".2.057777777777778." gy=".1.">
<div class="ps_grid-cell">
<div id="win0divPTNUI_LAND_REC_GROUPLET$14" class="ps_box-group psc_layout nuilp " tabindex="0" draggable="true" aria-dropeffect="move" aria-grabbed="false" droppable="true">
<div id="win0groupletPTNUI_LAND_REC_GROUPLET$14" class="ps_box-grouplet"><img id="PT_PORTAL_CLEAR_DOT$14" class="ps_process" src="/cs/p91h25r2x/cache/PT_PORTAL_CLEAR_DOT_1.gif" alt=""></div>
<h2 class="ps_groupleth"><span class="ps-label" id="PTNUI_LAND_REC_GROUPLET_LBL$14">Time</span></h2></div></div>

如果你需要更多细节,请告诉我。

共有2个答案

赫连晋
2023-03-14

要将拖动拖放到Tile Time的位置,您可以使用以下代码块:

WebElement  from = TestBase.wDriver.findElement(By.xpath("//div[@class='ps_box-group psc_layout nuilp ' and contains(id,'win0divPTNUI_LAND_REC_GROUPLET$13')]"));
WebElement  to = TestBase.wDriver.findElement(By.xpath("//div[@class='ps_box-group psc_layout nuilp ' and contains(id,'win0divPTNUI_LAND_REC_GROUPLET$14')]"));
new Actions(TestBase.wDriver).dragAndDrop(from, to).build().perform();
System.out.println("Drag and Drop Completed");
白浩荡
2023-03-14

可能您必须针对下面给出的可拖动元素

String sSource = "//*[@id=\"win0divPTNUI_LAND_REC_GROUPLET$13"]";
String sTarget = "//*[@id=\"win0divPTNUI_LAND_REC_GROUPLET$14"]";
WebElement wSource = TestBase.wDriver.findElement(By.xpath(sSource));
WebElement wTarget = TestBase.wDriver.findElement(By.xpath(sTarget));
Actions aActions = new Actions(TestBase.wDriver);
aActions.dragAndDrop(wSource, wTarget).build().perform();
 类似资料:
  • 我试图使用Selenium的Action类将JQuery嵌套可排序列表中的源元素拖放到另一个元素。我使用了标准的dragAndDrop方法,并将其分解为clickAndHold、moveToElement和release,但这两种方法都不适用。我甚至尝试使用源元素内部的子元素来拖动,但结果是一样的。 当我运行脚本时,测试返回为已通过,因此我知道正在找到元素,并且选择器有效。Selenium认为拖放

  • 问题内容: 我针对其运行的网站位于内部服务器上,因此无法提供链接,但是我可以发布一些单击“显示元素”时显示的相关代码。 有五个与此相关的元素: 组1 学生 移动1 组2 移动2 此页面显示学生组,并允许用户在组之间拖动学生。每个组都有一个移动元素。棘手的部分是,仅当用户将学生元素拖到该组上时,任何给定组的“移动”按钮才会显示,而该学生并非来自该组。 目的是将学生转移到新的小组中,然后再移回原来的小

  • 在安装了最新浏览器的情况下使用Selenium w/Java绑定和ChromeDriver 2.3 在花了足够多的时间试图找到一个解决方案后,我现在被难倒了。我正在尝试将一个元素拖放到另一个元素。唯一需要注意的是,我需要移动到的元素目标只有在移动源元素后才可见。有什么建议吗? 因此,这里是我点击并按住的源元素的屏幕截图,然后拖动它,我也可以删除两个选项: 元素是源 因此,当我按住鼠标并拖动一小部分

  • 无法在 AnjularJS 应用程序中看到拖动的元素,即使执行了拖放操作且没有任何错误。 代码如下: 以下是执行和执行的不同方法,没有错误: 还执行了JavaScript方法:但是没有运气,它也执行没有错误,但无法执行拖放操作在UIenter图像描述在这里 上述所有方法和命令都是编译和执行的,没有任何错误,但无法在UI中执行拖放操作(请帮助)。 尝试了所有可能的组合,我知道任何人都可以让我知道我错

  • 我正在使用本机拖放html5 api开发拖放界面。我们已经在其他部分使用了jQuery拖动,但是它在这个特定部分的表现很差,所以我们使用原始的JavaScript。 本质上,标记看起来像这样... 我为“dragstart”创建一个addEventListener并运行以下函数 它将我的类完美地应用于原始元素,但我似乎不能移动原始元素。浏览器创建克隆/幽灵图像...我看到你可以创建自己的图像显示,