如何使用 Cypress 检查可能不存在的元素

2024-01-17

我正在编写 Cypress 测试来登录网站。有username and password字段和一个Submit按钮。大多数登录都很简单,但有时首先会出现一个警告对话框,必须将其关闭。

我试过这个:

cy.get('#login-username').type('username');
cy.get('#login-password').type(`password{enter}`);

// Check for a possible warning dialog and dismiss it
if (cy.get('.warning')) {
  cy.get('#warn-dialog-submit').click();
}

哪个工作正常,除了如果不出现警告则测试失败:

CypressError:重试超时:期望找到元素:“.warning”,但从未找到它。

然后我尝试了这个,但失败了,因为警告出现的速度不够快,所以Cypress.$没有找到任何东西:

cy.get('#login-username').type('username');
cy.get('#login-password').type(`password{enter}`);

// Check for a possible warning dialog and dismiss it
if (Cypress.$('.warning').length > 0) {
  cy.get('#warn-dialog-submit').click();
}

检查元素是否存在的正确方法是什么?我需要类似的东西cy.get()如果找不到该元素,则不会抱怨。


Use 元素轮询并检查是否未通过测试。

在最大等待时间内,要么对话框永远不会到达,要么此代码将其关闭。

cy.get('#login-username').type('username');
cy.get('#login-password').type(`password{enter}`);

const ifElementExists = (selector, attempt = 0) => {
  if (attempt === 100) return null           // no appearance, return null
  if (Cypress.$(selector).length === 0) {
    cy.wait(100, {log:false})                // wait in small chunks
    getDialog(selector, ++attempt)           // try again
  }
  return cy.get(selector, {log:false})       // done, exit with the element
}

ifElementExists('.warning').then($el => {
  if ($el?.length) {
    $el.find('#warn-dialog-submit').click()
  }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Cypress 检查可能不存在的元素 的相关文章

  • 如何在 grails 3 中运行单个集成测试?

    Grails 3 至少 3 1 10 在仅运行特定测试时不稳定 如何让它运行单个集成测试 这是运行单个集成测试的示例命令 grails test app LoginFunctional integration 如果将 integration
  • Cypress 获取 href 属性

    我有一个测试用例 其中有一个在新选项卡中打开的链接 由于 Cypress 不支持多个选项卡 我想获得href该链接的属性 然后在同一选项卡中打开它 我正在尝试这样做 但由于某种原因它不起作用 it Advertise link should
  • Windows中有没有办法根据Python的需要抛出BSOD?

    我正在制作一个脚本来测试一些始终运行的软件 并且我想测试它从 BSOD 的恢复情况 有没有一种方法可以从 python 抛出蓝屏而不调用外部脚本或可执行文件 如 OSR 的 BANG 有趣的事情 Windows 内核函数可以做到这一点 我假
  • 用于屏幕文本的 OCR(光学字符识别)

    我正在尝试创建一个软件 通过捕获屏幕截图来自动化 PC 然后使用 OCR 光学字符识别 来查找要单击的特定按钮 例如 我已经有了鼠标和键盘控制部分 但现在 我需要 OCR 来处理屏幕截图 我发现 Tesseract OCR 似乎不能很好地处
  • 如何按特定顺序运行 Nightwatch 测试?

    我有几个测试来测试 UI 并同时用于创建数据 一组单独的测试依赖于此数据 这意味着这些测试必须仅在第一组运行后运行 我知道如何运行一组它们 或者使用标签运行它们 但如何才能按特定顺序运行它们呢 Nightwatch 将按顺序在特定文件中运行
  • 使用 Cypress 进行 Auth0 身份验证

    我正在尝试为 Cypress 创建登录命令 并注意到他们关于如何执行此操作的博客与预期值不匹配Auth0反应SDK https auth0 com docs libraries auth0 react 看来他们使用了自定义的 Express
  • rspec 中的相关测试

    我编写功能测试 并且我需要进行的测试取决于之前测试的通过情况 假设我有一个按钮 可以打开一个窗口 其中有一个功能 也就是说 为了检查此功能 我需要首先检查按钮的正确操作 即打开窗口或不起作用 因此 我需要这样做 如果单击按钮时测试失败 则测
  • 将 Selenium HTML 测试自动转换为 JUnit 的方法?

    我在 Mac 10 6 6 上使用 Selenium IDE 1 0 10 for Firefox 我们的 QA 部门已经为 Selenium 创建了一些 HTML 测试 我需要将其转换为 Junit 在 IDE 中 我可以通过转到 文件
  • 如何在 Cypress 的 E2E 测试中登录 Auth0?

    我已经开始测试 React Web 应用程序 但我没有走得太远 因为我遇到了登录问题 我在用cypress https www cypress io e2e测试工具 将显示一个带有登录按钮的欢迎页面 该页面会将您重定向到auth0 http
  • 如何在Nightwatch中测试伪元素的css属性

    我想使用 Nightwatch 测试我的网站上的背景图像是否正确 但它设置为 before 伪元素的背景 这是 CSS icon circle delete before content background url images svg
  • 在 Puppeteer 中如何将 Chrome 窗口从默认配置文件切换到所需的配置文件

    我的要求是在新的配置文件上测试 chrome 扩展 我提到https peter sh experiments chromium command line switches https peter sh experiments chromi
  • Selenium 单击在 Internet Explorer 11 上不起作用

    我尝试在 Internet Explorer 上单击 selenium 但它不起作用 我努力了element click moveToElement element click build perform javascript没事了 事实上
  • 测试在本地通过,但在 CI 中未通过 - cypress

    我有这个代码 div class input group div
  • 空手道 - 使用 Javascript 从 元素获取 URL

    使用空手道 我需要从标签 href 中提取 url 我直接在浏览器中使用 Javascript 尝试过 document querySelector a rel noopener href 它在浏览器中工作正常 我收到完整的 url 地址
  • 寻找网站测试自动化的方法

    我们开发定制调查网站 我正在寻找一种方法来自动化这些网站的模式测试 调查通常包含许多复杂的规则和分支 这些规则和分支也会根据项目的响应方式而触发 所有调查在发布给客户之前都经过严格测试 此测试需要大量的手动工作 我想了解一些可以通过回答问题
  • 硒脚本

    我想使用 selenium 脚本逐个单击网页上的一堆链接 每次单击都会刷新页面 然而 selenium 不支持像 visited 这样的 css 伪类 所以我无法区分已经点击的和我接下来要点击的 有办法解决我的问题吗 这是我的代码 http
  • 测试随机值 - 对这种方法的想法?

    好的 我一直在研究随机图像选择器和队列系统 因此您不会经常看到相同的图像 一切都很顺利 就我蹩脚的代码而言 until我到了随机位 我想测试一下 但是如何测试呢 没有Debug Assert i IsRandom 可悲的是 D 所以 我在用
  • 如何使用 TestCafé 编写包含 ID 的 xpath?

    需要在 TestCaf 选择器中使用 contains 关键字获取动态 ID html div xpath div contains id content body 我想在 TestCaf 的 xpath 上面写选择器 可以做吗 我相信这是
  • 如何在 TestNG 报告中包含 Log4j2 消息

    我希望在所有测试用例的 TestNG 报告中提供 Log4j2 日志记录信息 TestNG 使用一个名为 Reporter java 的特殊记录器类来跟踪日志输出并将其保存在其结果 XML 中 在 log4j 中 可以简单地创建一个路由到
  • 为什么我必须点击两次才能使用 selenium 提交输入

    ENV 铬 32 webdriver2 8 我正在使用 selenium java 单击提交输入 但我需要单击两次才能激活提交操作 输入代码

随机推荐

  • React Native:放置全局状态变量的位置

    我正在开发我的第一个 React Native 我再次需要一些帮助 我的应用程序有一种状态 运动 这对于组件 屏幕等非常重要 根据所选的运动 我也会加载不同的样式 图像和 api 信息 将有一个模式 用户可以从中更改运动 模式现在是 Hea
  • Java:从字符串创建日期对象并插入MySQL

    每当我必须在 Java 中处理日期 时间时 这都会让我感到难过 我正在尝试解析一个字符串并将其转换为日期对象以插入到准备好的语句中 我一直在努力让它发挥作用 但运气不佳 当我去编译该类时 我还会收到有用的错误消息 线程 main java
  • 使用 json 响应时出现 406 错误

    我正在尝试通过 batman rails gem 使 Rails 应用程序与 node js 框架 batman js 一起运行 当我在 Rails 控制器中使用 json 进行响应时 每次都会收到 406 错误 但我不知道为什么 这是我的
  • Java列表中如何通过对象的属性获取对象的索引

    我想通过 Java 中的属性获取列表中对象的索引 例子 List
  • Grails,如何获取请求对象

    Grails 有一个定义的 request 对象here http grails org doc 2 2 1 ref Servlet 20API request html 问题是当我尝试使用它时 我得到 No such property r
  • 在RobotFramework中访问列表内的Dictionary元素显示错误列表对象没有属性

    这是程序代码 我有一个json文件code json 其结构如下 键 值 键 值 当我将列表元素转换为字典时 它会抛出错误 Settings Library JSONLibrary Library OperatingSystem Libra
  • 在 matplotlib 中绘制 Python networkx 图表时出现混乱

    我正在测试如何在 networkx 上创建网络图 我的问题是 当我尝试使用 matplotlib 绘制这些图表时 节点 边缘和标签显得混乱 我希望将标签附加到右侧节点 并且希望边缘看起来像连接节点 code import networkx
  • 检查字符串是否包含子字符串

    如何使用 Perl 检查给定字符串是否包含某个子字符串 更具体地说 我想看看是否s1 domain example存在于给定的字符串变量中 要查明字符串是否包含子字符串 您可以使用index http perldoc perl org fu
  • Haskell 中具有多个构造函数的记录类型

    很多时候 当我使用 Haskell 编写某些内容时 我需要具有多个构造函数的记录 例如 我想开发某种逻辑方案建模 我想到了这样的类型 data Block a Binary binOp a gt a gt a opName String i
  • Hibernate 抓取条件被忽略

    我有一些与 LoginSession 类具有一对多关系的 User 类 我的 User 类中有一个 LoginSession 集合 Entity name T User public class User OneToMany fetch F
  • javascript中判断对象是否有属性和值

    我想检查一个对象是否具有某物的属性并且其值是否等于某个值 var test name joey age 15 name hell age 12 就是这样 一个对象数组 现在我想在对象内部进行搜索 如果该对象包含我想要的内容 则返回 true
  • 非阻塞 multiprocessing.connection.Listener?

    我使用 multiprocessing connection Listener 进行进程之间的通信 它对我来说很有魅力 现在我真的很喜欢我的主循环在客户端命令之间做其他事情 不幸的是 listener accept 会阻止执行 直到建立来自
  • 你会如何设计一个可破解的网址

    想象一下 您有一组以良好的树形层次结构组织的产品类别 并且您希望提供可修改的 URL 来浏览这些产品类别 你可以做这样的事情 catalog categorya categoryb categoryc 然后 您可以很容易地找出应该列出产品的
  • 如何删除具有指针成员的类的指针?

    我的意思是 如果我有这样的课程 class A int pi A pa 当我打电话时delete pa will pi被删除 您需要定义一个析构函数来delete pi 此外 您还需要定义复制构造函数和赋值运算符 否则当实例A被复制的两个对
  • 将 Google Play 游戏与 Firebase 混合使用

    我使用 google games api 将排行榜添加到我的 android 游戏中 现在我想使用 Android Studio 的 Firebase 向导 添加横幅广告 它构建得很好 但是当我尝试创建 apk 时 出现以下错误 错误 将字
  • Linux,需要准确的程序计时。调度程序唤醒程序

    我有一个在 Linux 系统上运行的线程 我需要以尽可能准确的时间间隔执行它 例如 每毫秒执行一次 目前 这是通过创建一个计时器来完成的 timerfd create CLOCK MONOTONIC 0 然后在结构中传递所需的睡眠时间 ti
  • 使用 R 中的 glmulti 包对 akaike 权重进行穷举搜索多元回归

    我想知道是否有人可以帮助我理解为什么当我在 R 中输入脚本时收到错误消息 对于一些背景信息 我正在研究6 个不同变量的效果 我认为是 63 种组合或模型 X 对于我的环境科学荣誉项目 在不同空间尺度上分别具有初级总产量和生态系统净产量 Y
  • 参考应用程序xml资源中的android库项目xml资源

    我有一个定义 XML 资源的 Android 库项目 让我们使用可绘制选择器作为示例 但我在字符串 样式等方面遇到问题 LibProject res drawable button selector xml 定义一个选择器 LibProje
  • Mongo 查找器和标准

    我在 Rails 应用程序中使用 MongoDB 和 Mongoid 映射器 但我不明白finders and criteria的查询 例如在 mongodb 文档中的部分Finders是查询Model all 但如果我使用它 例如User
  • 如何使用 Cypress 检查可能不存在的元素

    我正在编写 Cypress 测试来登录网站 有username and password字段和一个Submit按钮 大多数登录都很简单 但有时首先会出现一个警告对话框 必须将其关闭 我试过这个 cy get login username t