我正在努力与赛普拉斯的任何拖放行动的React为基础的网站。Cypress Jmeter 板中的操作不会失败,但项目不会被拖动。
我有一组div,它们是“在菜单中”的页面列表(因此它们对用户可见),另一组div是“不在菜单中”(因此它们对用户不可见)。我想做的是将“不在菜单中”页面移动到“在菜单中”部分。
这些是网站中的元素:
“可拖动”项:
<div data-testid='pages-section-not-in-menu-list' data-rbd-droppable-id="notInMenu" data-rbd-droppable-context-id="0" class="draggable-place">
<div class="page1">Page1</div>
<div class="page2">Page2</div>
<div class="page3">Page3</div>
</div>
“可丢弃”区域:
<div data-testid='pages-section-in-menu-list' data-rbd-droppable-id="inMenu" data-rbd-droppable-context-id="0" class="droppable-place">
</div>
我的代码:
public dragAndDropPagesToInMenu(): void {
const dataTransfer = new DataTransfer();
cy.wait(3000);
cy.log("Dragging one page to `In Menu` section");
cy.get("div[class='page3']")
.first()
.trigger('dragstart', { dataTransfer });
cy.get("div[data-testid='pages-section-in-menu-list']")
.eq(0)
.trigger('drop', { dataTransfer });
cy.get("div[class='page3']")
.last()
.trigger('dragend');
}
我也尝试了以下解决方案,但到目前为止没有一个有效:
- How to implement drag and drop in cypress test?
- https://applitools.com/event/drag-and-drop-in-cypress/
- https://docs.cypress.io/api/commands/trigger#Arguments
有什么想法吗
3条答案
按热度按时间dy1byipe1#
我遇到了同样的问题,我找到了这个解决方案。希望对你有用:
cypress/support/commands.js
文件中2lpgd9682#
下面是对我有效的方法,请注意
drop
和dragend
之间的小等待。这一部分非常重要:我不得不使用力,因为我拖动的元素在几毫秒内不可见。导致扳机动作失败,所以加力就能解决。
goqiplq23#
为了简化@Agustin Catalano的答案,您可以将自定义命令作为子命令,通过将
{ prevSubject: "element" }
作为第二个参数传递给Cypress.Commands.add
,如下所示:这样,您只需在查询链中指定一次主题的选择器: