В системе есть две области, которые следует учитывать при автоматизации функций перетаскивания. Одна вещь, которая называется «таймшит», находится в div, а другая — в ul > li. Вот образец html табеля рабочего времени,
<div class = "time-update__top-block">
В тестовых сценариях я использовал этот способ перетаскивания следующим образом:
cy.get(".time-update-block", { timeout: 60000 })
.trigger("mousedown", { force: true })
.wait(2000);
cy.get(
'.anotherElement',
{ timeout: 60000 }
)
.trigger("mousemove", { force: true }, "topLeft")
.wait(2000);
cy.get(
'.anotherElement',
{ timeout: 60000 }
)
.trigger("mouseup", { force: true }, "topLeft")
.wait(2000);
Приведенный выше код был успешно выполнен, и элемент был перетащен так, как я хотел.
Другой образец html выглядит следующим образом:
<ul class = "schedule-movie-list">
<li class = "undefined schedule-movie-list__item " title = "Drag me!" draggable = "true">Name1</li>
<li class = "undefined schedule-movie-list__item " title = "Drag me!" draggable = "true">Name2</li>
<li class = "undefined schedule-movie-list__item " title = "Drag me!" draggable = "true">Name3</li></ul>
В тестовых сценариях я использовал этот способ перетаскивания следующим образом:
cy.get(".schedule-movie-list > .schedule-movie-list__item", {
timeout: 60000
})
.eq(1)
.click()
.trigger("mousedown", { force: true });
cy.get(
'.anotherElement2',
{ timeout: 60000 }
).trigger("mousemove", { force: true }, "topLeft");
cy.get(
'.anotherElement2',
{ timeout: 60000 }
).trigger("mouseup", { force: true }, "topLeft");
Но в конечном итоге приведенный выше код не был успешно выполнен. Элемент не перетаскивался автоматически. Если у кого-то есть идея решить эту проблему, она высоко ценится.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используя dataTransfer const, мы можем получить то, что нам нужно;
describe("Main Page", () => {
const dataTransfer = new DataTransfer;
it("Drag & Drop elements", () => {
cy.get('.schedule-movie-list > .schedule-movie-list__item')
.first()
.trigger('dragstart', { dataTransfer });
cy.get(schedulerPerformancePanel)
.first()
.trigger('drop', { dataTransfer })
.wait(3000);