预扫描网页进行动态测试

2024-04-09

寻找 @JeffTanner 提出的问题的明确答案here https://stackoverflow.com/questions/69095677/cypress-adding-tests-dynamically-within-a-wrap about 生成动态测试。从这个问题和赛普拉斯样本来看,很明显我们需要知道生成它们之前所需的测试数量。

Problem

我们有一个网页,其中包含一个医疗保健分析数据表,该数据在一天中刷新多次。每次刷新团队都必须检查数据,为了分配工作,我们将每一行作为单独的测试运行。但行数每次都不同,这意味着我必须计算行数并在每次运行时更新系统。寻找一种以编程方式获取行数的方法。

HTML 是一个表格<tbody><tr></tr></tbody>,所以以下足以获得计数,但我无法在beforeEach(),抛出的错误是“未找到测试”

let rowCount;

beforeEach(() => {
  cy.visit('/analytics')
  cy.get('tbody tr').then($els => rowCount = $els.length)
})

Cypress._.times(rowCount => {
  it('process row', () => {
    ...
  })
})

The before:run事件在测试开始之前触发,您可以在那里扫描网页。

设置事件监听器setupNodeEvents()。 Cypress 命令不会在此处运行,但您可以使用等效的 Node 命令。

const { defineConfig } = require("cypress");

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('before:run', async (details) => {
        try {
          const fetch = require('node-fetch');
          const fs = require('fs-extra');
          const jsdom = require("jsdom");
          const { JSDOM } = jsdom;                           
          
          const response = await fetch(config.env.prescan);  // default below 
          const body = await response.text();                // or pass in command line

          const dom = new JSDOM(body);
          const rows = dom.window.document.body.querySelectorAll('tr')  // query

          // save results
          fs.writeJson('./cypress/fixtures/analytics-rows.json', {rows:rows.length})

        } catch (error) {
          console.log('error:', error)
        }
      })
    },
  },
  env: {
    prefetch: 'url-for-analytics-page'
  }
})

Test

import {rows} from './cypress/fixtures/analytics-rows.json'  // read row count

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

预扫描网页进行动态测试 的相关文章

  • cypress 中未定义 window 属性

    我正在使用 Cypress 和 Meteor 我需要Meteor窗口上要调用的对象Meteor loginWithPassword 我想用它来跳过每次使用 UI 登录 我已尝试以下操作 但运行时 Meteor 不在窗口上 cy window
  • 测试 API 调用不会在 Cypress 中发生

    我在我的应用程序中实现了 API 数据缓存 这样如果数据已经存在 就不会重新获取 我可以拦截初始获取 cy intercept api things as api cy visit things cy wait api passes 为了测
  • Cypress 断言等于和大于

    如何在cypress中编写大于等于的断言 如果我的值 5000 00 并且我必须编写测试用例 如果我的值 5000 00比通过并且如果我的值 gt 5000 00也通过 如何正确编写它通过 my value 5000 00 expect m
  • 如何在 codemirror 编辑器中使用 cypress .type() 进行输入?

    我正在写一些cypress测试 Codemirror 编辑器 我有用cypress在输入字段中键入 我正在努力实现cy type 在 CodeMirror 编辑器中 我在 codemirror 中的数据位于范围内 pre class Cod
  • 如果没有找到任何元素,我可以防止 Cypress cy.get 失败吗?

    我正在使用赛普拉斯cy get抓取元素 但如果没有 我的测试就会失败 我不想让它失败 我希望它继续下去 测试只是列出存在的项目 如果有 const listItemTitle data cy component list item titl
  • 将cypress测试框架添加到Maven pom.xml

    尝试在 Maven 项目中使用新的 cypress 框架 文档只有一个 npm 模块设置示例 npm install cypress 和一个 package json 使用示例 如何将其转换为 Maven 依赖项中的用法 您也可以直接下载C
  • 比较日期时间函数 cypress

    我有一个表单 允许用户输入日期范围 并且输出将仅包含该特定日期的结果 我可以使用 type 函数将日期输入到表单中 但是 我不确定如何检查结果是否在指定的范围内 例如 如果输入的日期是 17 03 2019 我应该能够使用这样的代码检查表中
  • 使用 Cypress 移动滑块

    我有一个来自 rc slider 的 Slider 组件 我需要 Cypress 来设置它的值
  • Cypress.io 中选择器的存储位置

    我是赛普拉斯的新手 避免将选择器 定位器硬编码到每个规范中的最佳方法是什么 在其他框架中 我们将创建一个包含所有选择器的配置文件 并让规范引用它 场景 我可能有一个在多个规范中使用的选择器 如果选择器发生变化 我不想在每个规范中更改它 我宁
  • 赛普拉斯将鼠标悬停在名为“自动化”的菜单选项上

    我试图通过使用下面的命令将鼠标悬停在菜单选项 镜头 它位于自动化选项卡下 上 但它似乎不起作用 cy get menu button overlay button projects popover click cy contains Aut
  • cypress 登录后等待重定向

    我正在使用 cypress 测试一个网络应用程序 我登录我的beforeEach功能 然后 在我的不同测试中 我开始cy visit mysite com url 我的问题是登录后 网站重定向到网站的特定页面 此重定向发生在cy visit
  • Cypress:如何等待所有请求完成

    我正在使用 cypress 来测试我们的 Web 应用程序 在某些页面中 有不同的端点请求被执行多次 例如GET A GET B GET A 为了等待所有请求完成并保证页面已完全加载 赛普拉斯的最佳实践是什么 我不想用很多cy wait 命
  • 在 Cypress 测试中尝试使用 Auth0 登录时出错

    我们的应用程序只能由经过身份验证的用户访问 并且我们使用Auth0 https auth0 com 用于身份验证 我们已经开始编写 Cypress 测试 并且在每次测试之前尝试使用 Auth0 JavaScript 客户端登录 第一个测试总
  • Cypress 通过 console.log 和命令日志来输出

    是否可以重定向或捕获赛普拉斯浏览器日志和命令日志以输出 我读了一些 Cypress githubissues https github com cypress io cypress issues 448关于这个话题 但我不知道如何让它发挥作
  • 如何使用 cypress.io 更改数据库中记录的属性

    我是 cypress 的新手 我想知道如何进行以下检查 我有一个案例 我在数据库中有一个产品 其状态可以是 InStock OutOfStock 和 Discontinued 如果产品处于 InStock 状态 我应该能够将其发送给客户 如
  • 从项目根目录移动 cypress 文件夹

    当我安装并运行 cypress 时 它会搭建一个cypress 我的项目根目录中的文件夹 问题是所有其他测试相关数据都存储在test 文件夹 有没有简单的方法可以将其移动到test cypress并配置 cypress 来查看那里 赛普拉斯
  • cypress 支持软断言吗?

    cypress 支持软断言吗 例如 我正在浏览 n 个元素并想要验证它们的值 如果任何元素的值不匹配 则测试失败 它不会继续验证下一个元素的值 有没有办法验证所有元素值并在最后显示失败的值 EDIT 我可能误解了 如果你的意思是软断言cy命
  • 在笑话单元测试角度中显示正确的错误

    我正在 NX 角度工作区中编写单元测试 有时它会给出这样的错误 node 15320 UnhandledPromiseRejectionWarning TypeError Converting circular structure to J
  • 如何使用 cypress.io 处理 PayPal 弹出窗口上的元素

    我需要自动化端到端测试 包括使用 PayPal 购买订单 此测试包括验证购买订单后出现的屏幕中的某些元素 我目前正在尝试使用 cypress io 我知道赛普拉斯建议不要访问第三方网站 https docs cypress io guide
  • 测试在本地通过,但在 CI 中未通过 - cypress

    我有这个代码 div class input group div

随机推荐

  • 对包含空标记的字符串进行标记

    我有一个看似简单的问题 就是用逗号分隔String到令牌中 在以下情况下输出应包含空令牌 中的第一个字符String是一个逗号 中的最后一个字符String是一个逗号 出现两个连续的逗号 例如 对于String abd def ghi 应该
  • Java XMLGregorianCalendar 转换为 Java util.Date 时存在错误?

    我正在将日期 时间值写入 XML 文件 方法是从基于 RAP 的 UI 中读取日期作为 Java Date 对象 并将其作为XMLGregorianCalendar反对实际的文件编写代码 相应的类是自动生成的 我无法控制它们 我输入的日期是
  • Java中String(String)构造函数的使用[重复]

    这个问题在这里已经有答案了 我读过的文章和书籍使用String s new String 应该一直避免 我明白为什么会这样 但是使用 String String 构造函数有什么用处吗 我认为不存在 也没有看到任何其他证据 但我想知道 SO
  • 层位置在(核心)动画开始时跳跃

    因此 我尝试创建一个平铺翻转效果 就像在 Windows Phone 7 上一样 到目前为止 我有以下代码 但我有几个疑问 CALayer layer self theRedSquare layer CATransform3D initia
  • C++ 函数导致应用程序崩溃且无法正常工作

    我的应用程序中出现了一个问题 我的 PrintAll 函数无法正常工作 最终只会使我的应用程序崩溃 我的应用程序应该从文件中读取字符串并将它们插入到数组中 问题是它读取不正确 最终会使我的应用程序崩溃 我认为问题出在这儿 int main
  • 如何使用绘图中的范围分隔符?

    我想使用plotly从某些图中的x轴中删除某些间隔 我找到了随附的示例https plotly com python time series https plotly com python time series 但运行它给了我错误 Val
  • 如何从 Twitter 的 firebase 用户获取 @user

    我试图在通过 firebase 登录 Twitter 后访问 Twitter 用户名 但 getDisplayName 方法返回用户名 而不是 有任何想法吗 我已经尝试过这个 FirebaseAuth getInstance getCurr
  • 如何找出一个类属于哪个依赖项?

    我正在使用 m2eclipse 我想在新项目中重用以前项目的一些依赖项 我知道我想使用哪个类 但我似乎无法找出它到底属于哪个依赖项 如果 eclipse 只是告诉我它从中加载的 jar 的名称 我会很高兴 我怀疑有一种方法可以在 Eclip
  • 如何获取字典中的键列表?

    我只想要字典的键而不是值 我还无法获得任何代码来执行此操作 事实证明 使用另一个数组的工作量太大 因为我也使用了删除 如何获取字典中的键列表 Use the Dictionary
  • int 可以别名为 unsigned int 吗? [复制]

    这个问题在这里已经有答案了 编译器生成代码假设int可以通过一个别名unsigned int 下面的代码 int f int a unsigned int b a 10 b 12 return a int f int a double b
  • 为什么这种双重检查锁定是正确的? (。网)

    我读过很多关于双重检查锁定的危险的文章 我会尽力避免它 但话虽如此 我认为他们读起来非常有趣 我正在阅读 Joe Duffy 的这篇关于使用双重检查锁定实现单例的文章 http www bluebytesoftware com blog P
  • 在 iPhone 上复制并粘贴多种数据表示形式

    当我尝试将多个数据表示放到 iPhone 3 0 的粘贴板上时 遇到了一些问题 我想做的是将数据表示形式和字符串表示形式放到粘贴板上 数据是我自己的数据类型 我用它来复制和粘贴到我的应用程序中 字符串表示形式是一种将应用程序的内容作为大纲复
  • 如何配置具有两个端点的 WCF 服务,以便为每个端点使用不同的 ListenUri?

    我有一个 WCF 服务 它使用以下方式公开端点webHttpBinding并由 WPF 和 ASP NET 应用程序使用 一切都很好 我现在尝试从 Windows Phone WP7 使用该服务 然而 由于 NET Framework 还没
  • 如何在 firebase auth web 中存储用户名和 photourl

    我正在尝试 firebase 身份验证 我想在用户注册时存储照片网址和用户名 我的注册代码 const email signupForm email value const password signupForm password valu
  • 使用 AVMutableVideoComposition 时 AVMutableComposition 冻结的奇怪行为

    我正在尝试使用合并多个视频AVMutableComposition 我面临的问题是 每当我尝试添加任何AVMutableVideoComposition为了应用任何指令 我的播放冻结在AVPlayer持续时间正好 6 秒 另一个有趣的事情是
  • python-Binance api:APIError(代码=-1013):过滤失败:LOT_SIZE

    当尝试使用 python binance api 下买卖订单时 出现以下错误 APIError code 1013 Filter failure LOT SIZE 现在我看到了冰山零件 https github com binance ex
  • Xcode:如何在应用程序中一次更改所有字体?

    我想知道是否可以同时更改大约 100 个不同视图控制器上的字体 这比一件一件地检查并改变它们要容易得多 有任何想法吗 谢谢你 用户界面文件 xib 是纯文本 您可以将它们加载到编辑器中 在左侧窗格中的 Xcode4 中 您可以右键单击 gt
  • 以编程方式在 ActiveReports 中插入分页符

    我一直在网上寻找一个很好的例子 但无法弄清楚如何以编程方式向 ActiveReports 报表添加分页符 我正在处理的报告通常需要每条记录 1 2 页 为了支持报告的双面打印 我想为使用奇数页的每个记录插入一个空白页 确保每个新记录都打印在
  • TFS 2015(本地)vNext 构建失败,但 xaml 构建有效

    我已经为 TFS 2015 配置了新的构建服务器 我的 Xaml 构建运行得很好 但 vNext 构建始终停留在 等待可用代理 状态 代理池为绿色 仅配置了一个构建代理 我已多次删除和配置代理 但没有成功 更新1 我从代理日志中得到了这个
  • 预扫描网页进行动态测试

    寻找 JeffTanner 提出的问题的明确答案here https stackoverflow com questions 69095677 cypress adding tests dynamically within a wrap a