如果元素存在等待它消失

2023-11-29

所以我正在尝试编写一些 cypress 代码,但我认为文档并不是很清楚。

我有两种情况。

  1. 页面加载时没有加载微调器。
  2. 页面通过加载微调器加载。

我想编写能够满足这两种情况的代码,并让测试继续进行。

  1. 如果页面没有加载微调器元素:照常继续测试。
  2. 如果页面确实有加载微调元素:等待该元素消失,然后继续

Cypress 有很多奇特的功能,但有关如何使用它们的文档还不够清晰。

我尝试使用以下代码:

  try {
    cy.getByTestId('loader-spinner')
      .should('exist')
      .then(el => {
        el.should('not.exist');
      });
  } catch (error) {
    cy.getByTestId('loader-spinner').should('not.exist');
  }

由于时间方面的原因,正确进行此测试可能会很棘手。

控制触发器

您确实需要知道什么控制着旋转器 - 通常是对 API 的调用。然后,您可以延迟该调用(或者更确切地说是响应)以“强制”旋转器出现。

为此,请使用截距

cy.intercept(url-for-api-call, 
  (req) => {
    req.on('response', (res) => res.delay(100))  // enough delay so that spinner appears
  }
)

// whatever action triggers the spinner, e.g click a button

cy.getByTestId('loader-spinner')  // existence is implied in this command
                                  // if the spinner does not appear 
                                  // the test will fail here

cy.getByTestId('loader-spinner').should('not.exist')  // gone after delay finishes

两种情况

首先,我认为您的两种场景想法不会帮助您正确编写测试。

您正在尝试使用 try..catch 有条件地测试(好主意,但不起作用)。问题是,由于时间方面的原因,条件测试很不稳定,你让测试在快速环境中运行,然后它开始在较慢的环境中崩溃(例如 CI)。

最好控制条件(如上面的延迟),然后测试该条件下的页面行为。

要测试微调器是否未出现,请在拦截中返回一个存根。它应该足够快以防止微调器显示。

cy.intercept(url-for-api-call, {stubbed-response-object})

// whatever action triggers the spinner, e.g click a button

cy.getByTestId('loader-spinner').should('not.exist')  // never appears

看一眼测试什么时候可以闪烁?

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

如果元素存在等待它消失 的相关文章

  • 以编程方式设置微调器文本颜色滞后、速度慢、瞬间颜色错误

    TLDR 我的微调器瞬间显示错误的颜色 我的旋转器有问题 每当我运行应用程序时 如果活动未缓存在内存中 它有时会滞后 在我可以将文本设置为正确的颜色之前 文本是默认颜色 如黑色 看起来确实很不专业 Video 请观看此屏幕录制以了解其实际效
  • Android Spinner:获取所选项目更改事件

    当所选项目发生更改时 如何设置 Spinner 的事件侦听器 基本上我想做的事情与此类似 spinner1 onSelectionChange handleSelectionChange void handleSelectionChange
  • 如何通过其值而不是位置设置微调器默认值?

    我的数据库中有 1 50 条记录 我使用游标获取这些数据 并使用简单游标适配器将这些值设置为 Spinner 现在我需要的是我想设置一个值 例如第 39 个值 作为默认值 但我不想通过它的位置来设置它的值 我知道如何通过其位置设置微调器默认
  • 带 cookie 的 Testcafe 请求

    我试图在 testcafes API 中找到类似于 Cypress 请求的方法 柏 request https docs cypress io api commands request html Cookies会将任何 cookie 附加到
  • Cypress - if then 函数

    我对赛普拉斯有疑问 我的页面上有一个元素并不总是出现 什么时候显示 什么时候不显示 没有任何逻辑 在 Cypress 中 是否有一些 IF THEN 函数或其他函数 如何检查元素是否显示 因此填充它 当您没有看到它时 如何跳过该步骤 我的代
  • 如何在 Cypress.io 中等待 WebSocket STOMP 消息

    在我的一项测试中 我想等待 WebSocket STOMP 消息 Cypress io 可以做到这一点吗 如果您要访问的 websocket 是由您的应用程序建立的 您可以遵循以下基本过程 获取参考WebSocket来自测试内部的实例 将事
  • Cypress:如何等待所有请求完成

    我正在使用 cypress 来测试我们的 Web 应用程序 在某些页面中 有不同的端点请求被执行多次 例如GET A GET B GET A 为了等待所有请求完成并保证页面已完全加载 赛普拉斯的最佳实践是什么 我不想用很多cy wait 命
  • 将 Cypress 与 Typescript 一起使用会给我在文档 JQuery not Defined 的示例中出现“get”的类型错误

    我正在尝试按照此处找到的文档使用 Cypress 设置 Typescript https docs cypress io guides tooling typescript support Configure tsconfig json h
  • 如何知道 Android 中的微调项目是否已被选中?

    我如何知道在 android 中是否已选择微调器中的项目 看这里 http developer android com resources tutorials views hello spinner html http developer
  • EditText高度问题

    我正在尝试设置较小的 EditText 高度 但仍然没有成功 这是我的来源
  • Cypress Angular 什么时候可以开始测试?

    我正在使用 Cypress 对我的 Angular 应用程序进行端到端测试 我观察到的问题之一是 Cypress 的反应速度很快 而我的应用程序准备交互的速度 相对 慢 Cypress 有一些经常被引用的blog https www cyp
  • 用于 jquery 数据表服务器端处理的 Spinner

    我有一个带有服务器端处理的 jquery 数据表版本 1 10 一切正常 然而 我的要求是为每个 ajax 调用显示一个微调器 而不是默认的 正在处理 消息 尝试了多种方法但没有任何作用 这是我的代码 table pp DataTable
  • 如何隐藏微调器下拉菜单android

    我想隐藏外部点击时弹出的微调提示 如果提示弹出窗口打开并且用户按主页键活动将最小化 因此当用户再次打开应用程序时 提示弹出窗口应该消失 有什么办法可以实现这一点吗 谢谢 编辑 提示弹出窗口未自定义 所以我不能把它们藏起来onPause or
  • 如何在 Cypress 中点击 x 次

    我的网站上有一个对象列表 所有对象旁边都有 添加 按钮 单击第一个 添加 按钮时 将添加该对象 并且该行消失并被下一个对象取代 对象名称相同 在保存之前 我想 click 三次以添加列表中的前三个对象 我怎样才能做到这一点 我知道 clic
  • 在 XML 中设置微调器模式

    在代码中定义微调器时 可以将模式设置为 对话框 或 下拉 Spinner Context上下文 int模式 使用给定上下文的主题和提供的显示选项模式构造一个新的微调器 但在 XML 中定义布局时我找不到此选项 我是否错过了它 或者这在 XM
  • 预扫描网页进行动态测试

    寻找 JeffTanner 提出的问题的明确答案here https stackoverflow com questions 69095677 cypress adding tests dynamically within a wrap a
  • 使用 Cypress 进行 Auth0 身份验证

    我正在尝试为 Cypress 创建登录命令 并注意到他们关于如何执行此操作的博客与预期值不匹配Auth0反应SDK https auth0 com docs libraries auth0 react 看来他们使用了自定义的 Express
  • Android 旋转器在旋转时表现得很奇怪

    我有一个片段 里面有各种旋转器 为了让这些微调器显示初始 不可选择 值 我使用自定义 arrayAdapter SpinnerHintAdapter 该类所做的唯一重要的事情是重写 getCount 因此不会显示选择数组的最后一项 这是存储
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 我如何在 Cypress 中使用软断言

    我已经从 npm 配置了软断言 npm i soft assert 现在我的 package josn 有 soft assert 0 2 3 我想使用软断言功能 softAssert actual expected msg ignoreK

随机推荐

  • 在 C# 中创建热点

    是否可以在 C 中创建热点 以便当鼠标位于某个区域时触发事件 您的标准 From 对象公开 OnMouseMove 事件 鉴于您没有任何控制热点的位置 您可以只处理该事件中的坐标 protected override void OnMous
  • Visual Studio 2015 中的向导中缺少 PostgreSQL 数据提供程序

    我花了一天时间尝试将 Entity Framework 6 SQL Server CE 迁移到 PostgreSQL 我已经很好地复制了数据库 但我似乎无法让数据提供程序正常工作 首先 我尝试了旧版 2 2 7 版本的 EF 提供程序 它不
  • com.google.android.maps.MapView ClassNotFoundException

    我正在尝试执行 google 地图活动 但收到 LogCat 错误并且我的应用程序崩溃了 我在注册 API 密钥时使用了 android 提供的编码 所以我不知道为什么它不起作用 我需要帮助解决这个问题 LogCat 08 10 11 04
  • 列表列表的唯一性

    我很好奇什么是唯一化此类数据对象的有效方法 testdata 9034968 ETH 14160113 ETH 9034968 ETH 11111 NOT 9555269 NOT 15724032 ETH 15481740 ETH 1548
  • 如何停止一个线程?

    当线程处于活动状态时 如何停止该线程 我已经给了喜欢 if thread isAlive thread stop 但方法 stop 已被弃用并引发异常 01 21 14 12 40 188 ERROR global 535 Deprecat
  • 是创建新的活动更好还是只是创建不同的布局并替换现有的布局?

    由于我是 Android 新手 我现在正在思考什么是正确的做事方式 目前 我正在编写的应用程序有 4 个不同的屏幕 屏幕 1 节点列表 主屏幕 屏幕 2 选项菜单 带按钮的表格布局 屏幕 3 导航 屏幕 4 有关版本等的文本详细信息 可以使
  • 在 Android 中模糊图像

    我正在使用以下代码来模糊 android 中的图像 但它不起作用 我得到的最终图像颜色非常扭曲 而不是我想要的模糊 我究竟做错了什么 public Bitmap blurBitmap Bitmap bmpOriginal int width
  • 如何从 Eval: in .dir-local.el 设置缓冲区局部变量?

    为什么这有效 nil compilation directory home vava code directory compilation command rake 这不是吗 nil Eval setq compilation direct
  • PHP Google Sheets API - 权限被拒绝

    您好 我刚刚开始学习 PHP 并且正在尝试使用 Google Sheets API 我以为我遵循了他们的指示 我可以很好地调用和编辑工作表数据 但只能公共访问 当我将访问状态更改为私人或组时 我遇到以下消息 PHP Fatal error
  • 使用 AspNet.Security.OpenIdConnect.Server 注销 (ASP.NET vNext)

    我正在使用 Visual Studio 2015 Enterprise 和 ASP NET vNext Beta8 来发行和使用 JWT 令牌 如下所述here 在我们的实现中 我们在令牌发布时将一些客户端详细信息存储在 Redis 中 并
  • 转换为 .NET 4 后,在 VS2010 中将字段附加到记录集时出现奇怪的错误

    我有这个网站的一些代码代码项目链接将数据表转换为记录集 这段代码一直工作正常 直到我更改为 NET 4 以前是 2 现在当我调用以下行时 Dim result As New ADODB Recordset result CursorLoca
  • 如何使用 Indy TIdTCPServer 跟踪客户端数量

    我想知道当前到 Indy 9 TIdTCPServer 的客户端连接数 在 Delphi 2007 上 我似乎找不到提供此功能的属性 我尝试在服务器 OnConnect OnDisconnect 事件上增加 减少计数器 但当客户端断开连接时
  • 我该如何处理代码以避免被杀?

    I got Killed运行一段代码后 代码的第一部分是 def load data distance file distance min dis max dis sys float info max 0 0 num 0 with open
  • MongoDB批量插入忽略重复

    我用谷歌搜索了一下 找不到任何关于如何在使用批量插入时忽略重复错误的可靠信息 这是我当前使用的代码 MongoClient connect mongoURL function err db if err console err err le
  • PHP 将月份数字转换为短月份名称[重复]

    这个问题在这里已经有答案了 我需要将月份编号转换为短月份名称 即 1 表示一月 2 表示二月 我知道我可以通过数组来实现这一点 但是还有其他方法吗 帮助表示赞赏 Thanks 就在这里 使用date stftime结合mktime创建所需月
  • yang 中默认值的条件赋值

    我的模型有两个属性 叶协议 叶端口 我想具体说明的是 如果协议 ssh 那么默认端口值为 22 如果协议 http 那么默认端口值为 80 etc 我该如何用 yang 来表达这个意思 没有条件的defaultYANG 值 你需要两个def
  • OpenQA.Selenium.WebDriverException:“无法在 http://localhost:60623/ 上启动驱动程序服务”

    以下代码在过去效果很好 几天后 我尝试再次运行它 但它抛出了这样的错误 using OpenQA Selenium using OpenQA Selenium Chrome using OpenQA Selenium Support UI
  • 如何移动自定义对话框?

    我是安卓初学者 我正在创建一个自定义对话框 它工作正常 但这个对话框没有动 如何移动这个自定义对话框 例如在Windows中包含记事本 画图等 当您单击此 记事本 画图等 标题栏时可以移动位置 如果可能 请发送如何移动对话框的信息 否则 如
  • window.print 不适用于 Opera 浏览器

    我正在尝试使用 javascript 代码在 Opera 浏览器中打开打印对话框 就好像我使用以下代码 Opera 浏览器可以理解并能够打开打印对话框
  • 如果元素存在等待它消失

    所以我正在尝试编写一些 cypress 代码 但我认为文档并不是很清楚 我有两种情况 页面加载时没有加载微调器 页面通过加载微调器加载 我想编写能够满足这两种情况的代码 并让测试继续进行 如果页面没有加载微调器元素 照常继续测试 如果页面确