问题标签 [cypress]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Cypress:设置属性值
我刚刚开始探索赛普拉斯并遇到了这样一个问题:是否可以在 Selenium 的帮助下选择一个具体的属性并改变它的值JavascriptExecutor
?例如,让我们来看看这段简单的代码
是否可以获取测试属性并分配我自己的值?
javascript - 赛普拉斯存根似乎会产生来自实际服务器的响应
在现有项目中尝试赛普拉斯时,我遇到了路由响应的问题。此文档文章中解释了该概念:https ://docs.cypress.io/api/commands/route.html#Without-Stubbing 。
这是一个最小的非工作示例。我正在尝试获取一个空对象作为响应主体:
存根路由清楚地显示在 GUI 中:
但响应是 404:
...具有以下主体:
我认为 404 响应是由我的实际服务器而不是 cy.server() 发送的。实际的服务器正在运行,我在 my: -filelocalhost:3000
中指定了它。baseUrl
cypress.json
有没有人见过类似的东西?我是否忽略了代码中的任何明显错误?
PS: 当我将端口号更改为其他未使用的端口时,错误会变为网络错误(这可能是意料之中的)。
javascript - 递增和递减一个值在赛普拉斯
我想测试type="number"
在赛普拉斯中增加和减少 HTML 输入字段 () 的值。更准确地说,我更喜欢使用箭头键来增加和减少值,但我似乎无法使用最明显的方法让它工作。
作为一个最小的工作示例,我设置了一个 React 组件,其渲染方法如下所示:
在赛普拉斯之外,在此字段中输入内容没有任何问题。使用箭头键和鼠标递增和递减值也是如此。
根据赛普拉斯关于 .type-method 的 API 文档,可以使用所谓的特殊字符序列 {uparrow}
和{downarrow}
作为参数cy.type()
来模拟用户的向上和向下按键。我已经尝试在输入标签和文档正文上使用这种方法(以防增量/减量侦听器以某种方式全局定义),如下所示,但它似乎不起作用:
查看 Cypress 的控制台输出(下图),向上箭头键事件(键代码 38)显然是由 Cypress 发送的。不过,与常规按键相比,此按键触发的生命周期事件更少。
有谁知道我可能做错了什么?或者我还能尝试什么?我对完全避免模拟按键的方法持开放态度,只要它们不涉及手动提取、递增和将值插入输入字段。
javascript - 覆盖来自 cypress.env.json 的配置变量
TL;博士:
我试图通过使用我的文件来覆盖该baseUrl
值,但我似乎无法弄清楚如何。有没有办法做到这一点?cypress.json
cypress.env.json
背景
在文件中设置环境变量cypress.json
,然后在其中覆盖它们就像 piecypress.env.json
一样简单。在:cypress.json
...并在cypress.env.json
:
关于配置变量,文档指出:
如果您的环境变量与标准配置键匹配,那么
environment variable
它们不会设置一个,而是覆盖配置值。
但是,如果我尝试baseUrl
从cypress.json
...设置
cypress.env.json
...并在...中覆盖它
...然后someVariable
被覆盖,但现有baseUrl
保持不变(并且 abaseUrl
出现在放置在env
键处的对象内):
baseUrl
设置并稍后在cypress.json
命令行中使用以下命令覆盖它时我没有问题CYPRESS_BASE_URL
:
然后,原始baseUrl
文件被覆盖:
总结一下:我是在文档中遗漏了什么,还是在文档中遗漏了什么?
javascript - 是否可以使用谷歌身份验证器为应用程序编写自动化测试
我们正在为我们的应用程序实现 mfa(multi factor auth),我正在尝试编写自动化测试来测试它。我没有看到任何直接的方法来获取用户登录的谷歌身份验证器代码。
有没有人尝试过这样做?
cucumber - cypress 和 Cucumber 之类的 BDD 框架之间的区别
有人可以解释一下 cypress.io 作为测试框架和像 Cucumber 这样的 BDD 框架之间的区别吗?据我所知,cypress.io 是一个用于 javascript 的 ui 测试框架。测试是用 javascript 编写的。您可以使用场景将通过应用程序的流程描述为 e2e-test。这类似于行为测试还是这个框架只关注用户界面?
拐角处有人说:Cucumber 或 JBehave 与 cypress 相同。我担心那不是真的。但是可以回答的论点是什么。我不开发网络应用程序,我很难比较这两种解决方案。
我试图澄清我的问题:想象有一个带有后端服务的应用程序和一个使用这些服务的前端(网络应用程序)。后端代表复杂的工作流程,整个应用程序应由 BDD 框架(例如 cucumber)进行测试。主要好处是一种按功能和场景描述的最新文档。它是像黄瓜这样的框架的核心。另一个好处当然是(也许是 e2e)测试本身。为了有价值,它需要 ui-testing 来测试整个工作流程。例如,您可以将硒与黄瓜一起使用来处理此问题。我认为 cypress 是一种类似于 selenium 的测试框架,对吧?只是在很多方面要好得多。但有人可能会说:“哦……柏树和黄瓜一样,因为你也可以定义场景等等……但我相信,当我们考虑 BDD 时,cypress 必须与 cucumber 结合使用,而不是作为新的独立 BDD 工具。从我的角度来看,cypress 是一个很棒的 ui 测试框架,但是......不是更多吗?!我在这里宣布了我的问题,以找到澄清的答案。
cypress - Cypress.io - 断言没有对 URL 的 XHR 请求?
使用 cypress.io 进行测试时,是否有一种好方法可以断言没有对给定 URL 发出 XHR 请求?
我想断言单击“保存”按钮时会添加一个新的 foo,但单击“取消”按钮时不会添加新的 foo。
像这样的东西:
我已经尝试使用执行 assert.fail 的 onRequest 回调设置 cy.route,但是当调用 URL 时,测试并没有失败。
现在,我正在捕捉我的(有意的)“未发生请求”错误,如下所示:
...这似乎有效,但肯定感觉不是很“柏树”。
javascript - 赛普拉斯与 SystemJS
我正在尝试创建一些基本测试来试用新的赛普拉斯库。在我的测试中,我cy.visit('http://mywebsite.com');
正在加载一个使用 SystemJS 的 AngularJS 应用程序。
如果我正确理解赛普拉斯,我不应该做任何其他事情,它会确保在运行其他任何事情之前加载页面。但是,这似乎不起作用,因为页面已加载,但 SystemJS 仍在加载模块。
如何让赛普拉斯等待所有 SystemJS 模块加载,然后再运行任何测试而不使用cy.wait(5000)
?
编辑
感谢 Dwelle,这是适合我的解决方案。我将初始 System.import 包装在一个 Promise 中,一旦 AngularJS 应用程序启动,该 Promise 就会得到解决。
然后在测试中
automated-tests - 如何在 Cypress.io 中创建类似于 Selenium 扩展元素的可重用元素?
在 Selenium 中,可以扩展元素。这使得拥有一组可重用的自定义元素进行测试成为可能。
例如,我们可以getText
添加一个方法。
并按如下方式重新使用它:
myElement.getText();
此示例在此处详细说明:http ://www.vcskicks.com/selenium-extensions.php
有没有办法在 Cypress.io 中复制这种行为?还是我们需要查询和调用相同的方法来获取数据?
javascript - 如何使用 cypress 将数据输入到 iframe 中的表单输入中?
我一直在尝试使用 cypress.io 测试条带结帐表单
如果有人设法让它工作,请告诉我。我在这里找到了一个关于此事的帖子https://github.com/cypress-io/cypress/issues/136并基于此我想出了:
但问题是条带形式仍然没有注册输入值。这是http://www.giphy.com/gifs/xT0xeEZ8CmCTVMwOU8发生的事情的一个小 gif 。基本上,表单不会注册更改输入触发器。
有谁知道如何使用柏树将数据输入到 iframe 中的表单中?