Cypress.io 测试中未发生拖放

2024-03-05

我试图拖动一个元素,然后将其放入放置区域,但测试并未在 Cypress.io 中执行拖放操作。如果有人可以就这里的潜在问题提出建议,那将非常有帮助。没有抛出错误,但是这里仍然没有发生拖放。

describe('Verify the drag and drop test', function() {

  it.only('Check whether the drag and drop of an item is working fine', function() {

  cy.visit('http://www.seleniumeasy.com/test/drag-and-drop-demo.html')  

    const MyDataTransfer = function () {};
    const dt = new MyDataTransfer ();
    dt.types = [];

    // cy.wait(3000);

    cy.get('#todrag span')
      .contains('Draggable 1')
      .trigger("draggable", {dataTransfer: dt});

    cy.get("#todrag span")
      .contains('Draggable 1')
      .trigger('mousedown', { which: 1, pageX: 600, pageY: 600 })
      .trigger('mousemove', { which: 1, clientX: 330, clientY: 35 });

    cy.wait(3000);

    cy.get('#mydropzone')
      .trigger("dropzone", {dataTransfer: dt});                     
  });   
});

进行一些更改应该可以实现您想要的效果。以下是解决此问题所采取的步骤的详细说明......

首先,而不是存根MyDataTransfer,只需构造一个新的数据传输 https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/DataTransfer对象,其中包含拖动事件所需的必要属性和方法:

const dataTransfer = new DataTransfer;

接下来最好触发本机放置和拖动事件 https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API#Drag_Events,相对于draggable and dropzone。 Selenium Easy 正在监听dragstart, dragend, and drop(你可以在他们的内部看到这个Drag-and-drop-demo.js 源文件 https://www.seleniumeasy.com/test/js/drag-and-drop-demo.js)。将它们放入辅助函数中,稍后在测试中调用:

function dndIt() {
  cy.get('#todrag span:first-of-type')
    .trigger('dragstart', { dataTransfer });

  cy.get('#mydropzone')
    .trigger('drop', { dataTransfer });

  cy.get('#todrag span:first-of-type')
    .trigger('dragend');               // <-- seleniumeasy listens for this...
}                                      // otherwise, draggables are copied.    

A beforeEachblock 对于设置视口和访问应用程序很有帮助:

beforeEach(function() {
  cy.viewport(1000, 600);
  cy.visit('https://www.seleniumeasy.com/test/drag-and-drop-demo.html');
});

最后,测试块调用辅助函数,并断言该项目已被拖放:

it('Check whether the drag and drop of an item is working fine', function() {
  dndIt();

  cy.get('#droppedlist')
    .should(($el) => {
      expect($el.children()).to.have.lengthOf(1)
    });
});

这是完整的解决方案:

describe('Verify the drag and drop test', function() {
  const dataTransfer = new DataTransfer;

  function dndIt() {
    cy.get('#todrag span:first-of-type')
      .trigger('dragstart', { dataTransfer });

    cy.get('#mydropzone')
      .trigger('drop', { dataTransfer });

    cy.get('#todrag span:first-of-type')
      .trigger('dragend');               // <-- seleniumeasy listens for this...
  }                                      // if left out, draggables are copied.

  beforeEach(function() {
    cy.viewport(1000, 600);
    cy.visit('https://www.seleniumeasy.com/test/drag-and-drop-demo.html');
  });

  it('Check whether the drag and drop of an item is working fine', function() {
    dndIt();

    cy.get('#droppedlist')
      .should(($el) => {
        expect($el.children()).to.have.lengthOf(1)
      });
  });
});

The Drag_n_drop_spec.js https://github.com/cypress-io/cypress-example-recipes/blob/master/examples/testing-dom__drag-drop/cypress/integration/drag_n_drop_spec.js中提供的cypress-example-recipes 仓库 https://github.com/cypress-io/cypress-example-recipes是一个有用的资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cypress.io 测试中未发生拖放 的相关文章

  • 提升变量有目的吗?

    我最近学习了很多 JavaScript 并且一直在尝试理解提升变量的值 如果有的话 我 现在 明白JS是一个两遍系统 它编译然后执行 另外 我知道 var 关键字 存在 在它声明的词法范围中 因此如果在引擎为其赋值之前调用它 那么它是 未定
  • 如何在javascript中动态向对象数组添加值?

    这是一个对象数组 var data label 1 value 12 label 1 value 12 label 1 value 12 label 1 value 12 我如何动态地为这些添加值 我尝试了以下代码但没有成功 var lab
  • HTML 和 标签有什么区别?

    HEAD 标签和 BODY 标签有什么区别 大多数 HTML 书籍仅 简短 提及 and 标签 但它们消失得很快 它们会影响浏览器呈现网页的方式吗 另外 它们会影响 javascript 的运行顺序吗 我的意思是 如果我里面有一个javas
  • jQuery 可以操作插入的元素吗?

    我是 jQuery 的新手 我认为 jQuery 可以操作由代码添加的元素是合理的 但我发现现在还不能 function addVideo click function publisher append div div
  • 如何在 google.maps.event.addListener 中使用它

    以下示例有效 但是当我尝试传递参数并使用this在该功能不起作用 Working google maps event addListener markers i click showInfoWindow function showInfoW
  • “require(...)”是常见的 JavaScript 模式还是库函数?

    我通常发现这是 node js 脚本 模块以及 phantomJS casperJS 等中的第一行 我很好奇 这是否是服务器端 javascript SSJS 的常见模式 类似于 include在 C C 中或import在 Java 中
  • 从对象中取出具有无效(NaN、空白等)值的键的最佳方法?

    我有一个供用户填写的简短搜索表单 将有多个搜索查询进入 MongoDB 该表单创建一个名为的变量searchParams可能看起来像这样 var searchParams city Springfield bedrooms 3 bathro
  • Pjax动画

    我终于让 pjax 工作了 但我还有另一个问题 如何添加一些 jquery 动画 如淡出 幻灯片旧内容和淡入 幻灯片新内容 默认情况下 pjax 只是更改内容 没有任何好看的效果 任何帮助将非常感激 此致 基本上 你有一堆事件 https
  • 如何设置必须输入特定数字的字段?

    我想知道如何创建一个需要输入特定数字或文本的字段 例如 激活码 以及在输入的确认答案的情况下移动到 网页 并且在未确认的情况下移动到 另一页面 的按钮 使用必需的属性
  • 冒泡可用于图像加载事件吗?

    我可以用吗 window addEventListner 某种程度上来说 我所有的图像都有一个display none 图像加载后 我想设置display inline 这样我就可以规范下载图像时显示的内容 在这种情况下 我无法预加载图像
  • 非法使用break语句; javascript

    当这个变量达到一定数量时 我希望循环停止 但我不断收到错误 未捕获的语法错误 非法的中断语句 function loop if isPlaying jet1 draw drawAllEnemies requestAnimFrame loop
  • 如何在具有相同值的下拉菜单上触发 jQuery 更改事件

    即使用户选择相同的值 如何每次都触发 jQuery 更改事件 我需要刷新效果 例如如果用户选择Lawyer它会发出警报hello然后用户再次选择Lawyer从下拉菜单中 它应该发出警报hello 我怎样才能实现它 以下是代码 jQuery
  • 如何按 Angular 表中的属性(该属性具有单个 rownspan)进行分组?

    我没有找到这个问题的合适标题 我的问题是 例如 我有一个包含两列的表 列汽车品牌和列汽车型号 我希望表是 like in this picture 换句话说 品牌名称只会出现 1 次 我的输入数组采用以下 json 格式 brand Aud
  • 在 Nodejs 中,如何停止 FOR 循环直到 MongoDB 调用返回

    我正在研究下面的代码片段 我有一个名为 stuObjList 的 JSON 对象数组 我想循环遍历数组以查找具有特定标志集的特定 JSON 对象 然后进行数据库调用以检索更多数据 当然 FOR 循环不会等待数据库调用返回并到达 j leng
  • 选择单选按钮时隐藏/显示 3 个文本框

    我有 2 个单选按钮 选择一个文本框时 我想显示 3 个文本框 并在选择其他文本框时隐藏它 这是代码 这是我的 2 个单选按钮
  • 在javascript中创建图像的缩略图方块(不丢失纵横比)

    我正在制作一个客户端拖放文件上传脚本作为书签 在上传之前 我使用 File API 将图像读取为 base64 格式并将其显示为缩略图 This is how my thumbnails look like I want them to l
  • 标记(Markdown)+ Mermaid(流程图和图表)

    努力去争取 美人鱼 https github com knsv mermaid https github com knsv mermaid跟 共事 标记 https github com chjj marked https github c
  • 绘制多边形

    我正在使用 Google Maps API V3 根据路径绘制多边形 该路径是随机未排序坐标点 LatLng 的数组 这会产生以下形状 Polylines intersect Problem 由于多边形的形状取决于路径中点的顺序 因此如何对
  • 使用ExternalInterface和IE从JavaScript获取Flash中的当前URL

    我正在尝试获取 Flash 播放器当前所在的 URL 不是 swf 文件的 URL 而是浏览器指向的 URL 到目前为止我已经使用过 var st String ExternalInterface call window location
  • 将 JSON 属性绑定到表单

    我有一个 JSON 对象和一个

随机推荐

  • 管道转换后获取 ngFor 中数组的长度

    我有以下模板 div Here is the length of my ngFor l div 不幸的是 ngFor 中不存在长度 如何解决此问题以使 ngFor 中的长度可用 另一种解决方案可能如下 div Here is the len
  • 我可以将 sqlbulkcopy 与 Azure SQL Paas 结合使用吗?

    我可以将 sqlbulkcopy 与 Azure SQL Paas 结合使用吗 我有一个可以批量复制到数据库的应用程序 我们正在使用 SQL PaaS 对其进行测试 SQLBulkCopy 似乎失败了 我以为我读到某处不支持此功能 但在 A
  • Canvas对象标签:不是我最初给它的类型

    我有一个画布 我向其中添加各种对象 例如文本对象等 我向每个画布子对象添加 标签 属性 在下面的示例中 我为绝对支持的 tag 属性添加了一个字典 import tkinter window tkinter Tk myCanvas tkin
  • Facebook 点赞按钮显示所有 Facebook 页面的点赞数均为 0

    更新 所以这很大 如果您尝试使用 赞 按钮链接到任何 Facebook 页面 则不会起作用 尝试访问 Facebook 之类的创建页面 http developers facebook com docs reference plugins
  • 在 Perl 中比较字符串时如何忽略重音符号?

    我有这个测验应用程序 我将人们输入的内容与正确的答案相匹配 现在 我所做的基本上是 if input answer i print you won 这很好 就好像答案是 鱼 一样 用户可以输入 一条鱼 并被视为一个好的答案 我面临的问题是
  • 获取 C 字符串中索引引用的字符

    我有一根绳子 char foo abcdefgh 我想写一个for循环 一一打印出所有字符 a b c etc 这是在C中 好吧 这是一个问题 所以我要回答它 但我的答案会有点不寻常 include
  • 为什么 Int32.MaxValue = 2147483648? [复制]

    这个问题在这里已经有答案了 我想知道为什么 NET 中 Int32 的最大可能值是 2147483647 而不是 2147483648 因为 2 1 2147483648 谢谢 An Int32以32位存储 而不是31位 其范围的一半由负数
  • 在 Mac(Chrome 和 Safari)上,文字看起来比 PC 上更粗体,为什么?

    在查看不同的操作系统时 我注意到 尤其是在 Chrome 和 Safari 中 Mac Book 上的文字看起来比 PC 上的文字更粗体 是不是只有浏览器 Web 套件才具有解释 CSS 和 HTML 的能力 而操作系统本身却没有呢 如果上
  • r 将列数未知的长数据整形为宽数据

    我确信这是微不足道的 但我找不到如何做到这一点 我有一个数据框 其中有个人 每个人都可以有多个属性 并且每个属性都以多种方式分类 目前它是长条形的 记录看起来像这样 示意性的形式 实际上有点复杂 IndividualID Property
  • 好的Java图算法库吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新
  • 使用 Python 发送特定目录中文件更改的电子邮件通知

    我想编写一个在特定目录中查找的函数的脚本 对于文件 如果有新文件 应该发出通知邮件 我已经准备了一个脚本 它正在目录中查找新文件 它写道 有关新文件的通知进入控制台 但现在我想在有新文件到达时立即通过电子邮件通知 有人可以帮忙吗 impor
  • SQL Server 集成安全性

    我一直在努力研究 SQL Server 中与安全相关的问题 我们正在开发一个面向 SQL Server 2008 的 NET 应用程序 并且我们希望使用 FileStream 现在我发现 如果您使用集成安全性 SQL Server 只允许通
  • FxCop:复合词应被视为离散术语

    FxCop 希望我将用户名拼写为大写 N 即 UserName 因为它是一个复合词 然而 由于一致性原因 我们需要用小写 n 来拼写它 所以要么是用户名 要么是用户名 我尝试通过将以下部分添加到该部分来调整 CodeAnalysisDict
  • 什么是 DepthwiseConv2D 和 SeparableConv2D?它与 keras 中的普通 Conv2D 层有何不同?

    我在查看 EfficientnetB0 的架构时注意到了 DepthwiseConv2D 操作 做了一些挖掘 发现还有一个 SeparableConv2D 这些操作到底是什么 DepthwiseConv2d 执行深度空间卷积的第一步 分别对
  • mysql 在一个查询中计算两个表中的记录?

    我有三个 MySQL 表 patient paID paCode paAccountID foreign key test tsID tsName tsPatientID foreign key tsAccountID foreign ke
  • 如何通过 InMemoryTestHarness 成功驱动 MassTransitStateMachine?

    跟进 如何编写 MassTransitStateMachine 单元测试 https stackoverflow com questions 49763600 how to write masstransitstatemachine uni
  • Firestore 查询是否可以使用其中一个字段或 whereFields 字段?

    我想要一个像这样的查询 db collection Bookings whereField servicer isEqualTo userID customer isEqualTo userID 它不会有两次不同的读取 而只会有一次 并且它
  • 如何检查 UITextField 何时发生变化?

    我试图检查文本字段何时发生变化 也相当于用于 textView 的函数 textViewDidChange到目前为止我已经这样做了 func textFieldDidBeginEditing textField UITextField if
  • 在 React Native 中生成发布 apk

    我通过本机反应创建了一个简单的应用程序 现在完成部署后 我想制作发布 apk 以便根据它的官方网站 https facebook github io react native docs signed apk android我已经创建了密钥
  • Cypress.io 测试中未发生拖放

    我试图拖动一个元素 然后将其放入放置区域 但测试并未在 Cypress io 中执行拖放操作 如果有人可以就这里的潜在问题提出建议 那将非常有帮助 没有抛出错误 但是这里仍然没有发生拖放 describe Verify the drag a