使用 Cypress 处理悬停在菜单上

2023-11-27

我最近偶然发现了 e2e 工具 -赛普拉斯io。我目前正在为我合作的公司进行 POC,以对 React 应用程序进行 e2e 测试。就像现在大多数网络应用程序一样,它有一个悬停在菜单上的菜单。

一个例子 :

URL : Fmovies

我试图从鼠标悬停中单击一个菜单项,但测试失败,表明display被设定为none.

在 Selenium 中,我们使用moveElement方法转到这个元素,然后做我们需要做的事情。但是,我无法使用 Cypress 做到这一点。

考虑到当前的菜单,我写了这个

it('goes to specific element in Genre',()=>{
        cy.get('#menu').within(()=>{
            cy.get('ul').within(()=>{
                cy.contains('Family').click();
            });
        });
    }); 

Error : Error


赛普拉斯拥有独特的工作流程,该工作流程基于将尽可能多的测试烘焙到其默认行为中。在模拟点击包含“Family”的元素之前,它检查可操作性。这是一个内置测试,如果元素被隐藏,它将失败,display:none(就是这里的情况),大小0,0等。只有通过该测试后,它才会模拟包含“Family”的元素上的操作。

您可以使用以下方法覆盖可操作性检查.click({force:true}),但是这样你就失去了用户实际上能够找到并单击该元素的保证。

执行此测试的正确方法是触发下拉菜单,使元素变得可见,然后单击。如果您想找到“流派”菜单项,显示下拉菜单,然后单击“家庭”项,您可以执行以下操作:

describe('Hover Menu',()=>{
    it('can click on a genre sub-menu item',()=>{
        cy.get('#menu').contains('Genre').next('.sub-menu').then($el=>{
            cy.wrap($el).invoke('show')
            cy.wrap($el).contains('Family').click()
        })
    })
})

Here, show是一个 jQuery 方法,它修改 CSS 属性以使元素可见。

cy.wrap($el)将 jQuery 元素转换为 Cypress Chainer,然后您可以在其上调用 Cypress 命令。

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

使用 Cypress 处理悬停在菜单上 的相关文章

随机推荐

  • 使用存储过程进行分页

    我正在尝试添加分页存储过程的排序功能 我该怎么做呢 到目前为止我已经创建了这个 它工作正常 但是当通过时 sort参数 没用 ALTER PROCEDURE dbo sp Mk page INT size INT sort nvarchar
  • SignalR 不会使用 Websocket 协议,即使我在 Windows 8 中安装了该协议

    我正在使用 signalr 在我的网络应用程序中执行一些实时事件 我试图强制信号器使用新的 websocket 协议 但它不会 即使我指定它 connection hub start transport webSockets 我确实安装了
  • 为什么java应用程序在gdb中崩溃但在现实生活中运行正常?

    尝试从 gdb 运行 java 应用程序会导致段错误 但单独运行应用程序则不会 这个应用程序是一个 JAR 它使用JOGL以及一些与 GPU 对话的内存映射 下面的 Stacktrace 暗示了某种内存访问问题 但我不明白为什么它出现在 G
  • 如何使用 IValidatableObject?

    我明白那个IValidatableObject用于以一种可以相互比较属性的方式验证对象 我仍然希望有属性来验证各个属性 但我想在某些情况下忽略某些属性的失败 我是否试图在下面的情况下错误地使用它 如果不是我该如何实施 public clas
  • 如何安全地生成 AES CBC 加密的 IV?

    我从事一些加密方面的工作 我使用 AES 256 和 CBC 模式 我使用 OPENSSL 我知道以下事情 来源 维基百科 初始化向量应该是 唯一 对于使用给定密钥加密的任何消息都不能重复 不可预测 观察到任意数量的消息及其 IV 的攻击者
  • 使用 beautifulsoup python 更改内部标签的文本

    我想改变inner text使用获得的 HTML 中的标签Beautifulsoup Example a href index html Foo a 变成 a href index html Bar a 我已经设法通过它的 id 获取标签
  • ASP.NET 中的 ActiveDirectory 当前用户名

    我正在尝试让 ActiveDirectory 和标准表单登录都正常工作 但有一件事阻止了我 我无法获取当前 Windows 用户的名称 我最接近的是var i WindowsIdentity GetCurrent 但这给了我 IIS 应用程
  • 取消 useEffect 挂钩中的所有异步/等待任务以防止反应中内存泄漏的正确方法是什么?

    我正在开发一个 React chap 应用程序 它从 firebase 数据库中提取数据 在我的 仪表板 组件中 我有一个 useEffect 挂钩检查经过身份验证的用户 如果是这样 则从 firebase 中提取数据并设置电子邮件变量和聊
  • microsoft.net.compilers 包中包含什么版本的编译器?

    microsoft net compilers 包的文档 位于https www nuget org packages Microsoft Net Compilers says Net 编译器包 引用这个包将会导致 使用特定版本的 C 和
  • Swift:添加可选整数

    我声明如下 var x Int var y Int 我想要第三个变量z其中包含总和x and y 据推测 如x y是可选的 z也必须是可选的 var z Int x y 但这会产生编译器错误 可选类型 Int 的值 没有打开 您是想使用 吗
  • 渲染大图像时出现javafx NullPointerException

    我正在尝试使用以下方式渲染 png 图像GraphicsContext drawImage JavaFX 8 下的方法 我的代码对于尺寸为 1000px x 2000px 的图像完美地工作 但不幸的是我需要渲染尺寸为 7000px x 14
  • C# 中等效的 Objective-C 代码块

    我如何用 C 编写等效代码 typedef void MethodBlock int void fooWithBlock MethodBlock block int a 5 block a void regularFoo self fooW
  • 为什么我的程序中有无限循环?

    int main void int i int array 5 for i 0 i lt 20 i array i 0 return 0 为什么上面的代码会陷入无限循环 您声明一个包含 5 个元素的数组 但向其中写入 21 个元素 写入超出
  • LESSCSS - 使用计算和返回值

    H i 希望你能帮忙 有没有办法LESS仅返回一个值 感觉我错过了一些非常明显的东西 假设我有 unit em basevalue 1 我可以用一些东西来给我一个速记回报 someClass padding basevalue unit 就
  • SonarQube:新代码的覆盖范围从未计算过

    我已经设置了 SonarQube Maven 和 Cobertura 以便在每次构建运行时上传单元测试覆盖率 我想使用差异视图来获取增量的覆盖范围 仅限新代码 覆盖范围本身已成功上传 我可以看到代码行的增量 但是 我无法让 新代码覆盖范围
  • 启动 PyCharm 时出错:无法加载 JVM DLL

    我之前安装了PyCharm是为了学习Python 之后我也安装了Eclipse来学习JAVA 顺便说一句 现在我启动 Eclipse 没有问题 但是当我启动 PyCharm 时 我看到如下错误消息 无法加载 JVM DLL C Progra
  • 更改表单的操作属性

    好吧 我一定在这里遗漏了一些东西 因为这应该非常简单 但它不起作用 我有一个form在我的页面上有一个空的action属性 action 当页面准备好后 我想更改action归因于其他事物 我的代码很简单 HTML
  • RecyclerView.Adapter 没有看到重写的 onBindViewHolder 方法?

    我在我的项目中使用 DataBindings 和 RecyclerView 我有一个 RecyclerView 的基本适配器 看起来像这样 public abstract class BaseAdapter
  • 将文件从 PostgreSQL 导入到 R

    我有一个很大的数据集 我将在 R 软件中进行一些分析 虽然我无法将数据正确导入到 R 中 我收到此错误 Error in postgresqlNewConnection drv RS DBI driver could not connect
  • 使用 Cypress 处理悬停在菜单上

    我最近偶然发现了 e2e 工具 赛普拉斯io 我目前正在为我合作的公司进行 POC 以对 React 应用程序进行 e2e 测试 就像现在大多数网络应用程序一样 它有一个悬停在菜单上的菜单 一个例子 URL Fmovies 我试图从鼠标悬停