Node.js 剧作家拖放

Node.js 剧作家拖放,node.js,drag-and-drop,playwright,Node.js,Drag And Drop,Playwright,尝试测试一些拖放功能,看起来剧作家没有拖放功能,所以我使用的是mouse.move(),mouse.down()&mouse.up() 尽管我的尝试似乎失败了,但目标没有移动。代码如下: test(“拖放测试”,异步()=>{ 等待页面。转到(“https://www.w3schools.com/html/html5_draganddrop.asp"); wait page.waitForSelector(“接受选项”); 等待页面。单击(“接受选项”); 等待页面。等待选民(“第1部分”);

尝试测试一些拖放功能,看起来剧作家没有拖放功能,所以我使用的是
mouse.move()
mouse.down()
&
mouse.up()

尽管我的尝试似乎失败了,但目标没有移动。代码如下:

test(“拖放测试”,异步()=>{
等待页面。转到(“https://www.w3schools.com/html/html5_draganddrop.asp");
wait page.waitForSelector(“接受选项”);
等待页面。单击(“接受选项”);
等待页面。等待选民(“第1部分”);
让xStart、yStart、xFinish、yFinish、elementHandle、rect;
elementHandle=等待页面。$(“#div1”);
rect=await elementHandle.boundingBox();
xStart=rect.x+rect.width/2;
yStart=垂直y+垂直高度/2;
elementHandle=等待页面。$(“#div2”);
rect=await elementHandle.boundingBox();
xFinish=rect.x+rect.width/2;
yFinish=垂直y+垂直高度/2;
log(`move from(${xStart},${yStart})to(${xFinish},${yFinish})`);
等待page.screenshot({path:“before drag.png”});
等待page.mouse.move(xStart,yStart);
等待page.mouse.down();
等待页面。鼠标。移动(xFinish,yFinish);
等待page.mouse.up();
等待page.screenshot({path:“after drag.png”});
});

我还一直在努力研究如何使剧作家能够进行
拖放操作

例如,我需要垂直移动

重新订购前 1. 2. 三,

应用重新排序后 2. 1. 三,

能够做到这一点的关键是
步骤:5个
选项。我不完全确定它的作用,但我从这里发现:

希望这对你有用。我认为你的情况,你应该这样改变

  await page.mouse.move(xStart, xFinish);
  await page.mouse.down();
  await page.mouse.move(yStart, yFinish);

您可以在此处投票支持拖放。我投了一票。谢谢,您对上述代码是否有效有何想法?唯一有效的测试是使用dispatchEvent函数,但要找到您需要传递的数据传输对象可能非常棘手。感谢您的回答,即使定义了
步骤
选项,我无法让我的例子工作,你有一个工作的例子分享吗?你能让代码中的拖放操作垂直移动吗?@user3770935当然,我发现
step
将从起点到终点的路径分解为多个步骤,并进行许多较小的移动。首先,我建议增加步骤(我们从5增加到15)。如果您可以看到它正在重新排序,但没有应用,则可能完成任务太快,因此我在
wait page.mouse.up()之后添加了
wait page.waitForTimeout(4000)
。希望这对你的情况有所帮助。看起来这是一个众所周知的问题,HTML5拖动事件不是由鼠标移动触发的。查看此线程:正如@hardkoded所评论的,在这里我们似乎需要
dispatchEvent
  await page.mouse.move(xStart, xFinish);
  await page.mouse.down();
  await page.mouse.move(yStart, yFinish);