我有一个表单,其中允许用户输入日期范围,并且输出结果仅来自该特定日期
我可以使用.type()函数将日期输入表单。但是,我不知道如何检查结果是否在规定的范围内
例如,如果键入的日期是('17/03/2019'),我应该能够使用这样的代码检查表中的结果是否在范围内
cy.get('.table')
.should('not.contain','18/03/2019') // This is wrong
我想比较一下,看看产生的结果是否仅在2019年3月17日00:00:00和2019年3月
Cypress进行端到端测试。我听到了一些好消息
当我查看定价模型时,我发现你可以以每年4788美元的价格获得20个仪表板用户。我的公司有100名开发人员,他们有时需要为他们的项目编写端到端测试。这相当于每年47880美元
5万美元对于我的老板来说太多了,因为有太多的开源选项(比如Jest+Puppet)
但我注意到,它们表明Cypress测试运行程序是免费的、开源的。所以我现在很困惑
只有试跑员能应付吗?或者这更像是说它对构建服务器是免费的?是否所有编写端到端测试的人最终都会使用Cypress
我有一个加载更多按钮加载柱和一个Cypress测试,涵盖加载操作。我怎么能告诉Cypress重复这一步骤直到按钮消失(如不再加载任何内容?)。如果我不知道我需要点击多少次
在一次迭代中,我通过以下方式进行检查:
cy.get('#loadmore').click();
cy.get('#loadmore').contains(text.loading);
cy.wait('@loadPosts')
cy.get('.blog').find('.article').should('have.l
是否可以在我的组件目录中使用Cypress创建我的单元测试,和/或是否可以链接它们而不是将它们放在Cypress文件夹结构中?
默认情况下,测试文件位于cypress/integration中,但可以配置为其他目录
然后在上可以找到选项integrationFolder,它指定包含集成测试文件的文件夹的路径,默认情况下其值为cypress/integration
因此,您只需更改cypress.json文件中的integrationFolder选项。
默认情况下,测试文件位于cypress/in
我正在尝试使用Cypress测试RESTAPI的用户权限。授权是通过调用另一个API端点生成的JWT令牌完成的。对于列表用户端点,分别为授权用户和未授权用户返回200和401响应
假设SUT有8个角色:角色1、角色2……等等
应允许Role1和Role2访问列表用户端点
如下图所示,我目前已将其设置为可以正确测试Role1是否获得正确响应,但是,我不确定如何对多个角色执行此操作,以便我可以测试Role1和Role2是否获得200,而Role3等是否收到401响应
我想我想将整个测试套件(即所有端
这是我第一次使用Cypress进行tme,我几乎完成了我的第一次测试。但要做到这一点,我需要针对一个未知的数字进行断言。让我解释一下:
当测试开始时,会生成一个随机数目的元素,我不应该控制这个数(这是一个要求)。所以,我试图通过这种方式得到这样的数字:
var previousElems = cy.get('.list-group-item').its('length');
我不确定是否获得了正确的数据,因为我无法记录它(打印时,“cypress控制台”会显示“[Object]”)。但假设这
当cypress测试失败时,如何获取失败的文件和代码行。特别是,如果我有一个长测试(如文档中所建议的),那么it不足以定位失败的测试。我下面的一个选项是调试器选项,它添加在行之前,以查看测试失败的位置。在下面的测试中,我从名为transportMe()的函数接收到一个heightInput,并将该值传递到该文本字段。因此,在下面的情况下,没有定义带有错误“transt”的测试抛出。因此,我在循环开始之前添加了一个调试器,并在运行时按F12键,然后它将导航到控制台中的行,我们可以进一步查看F11以
我有以下测试
it('does not trigger request', () => {
cy.shortcutThatTriggersRequest()
cy.route({
method: 'POST',
url: '[url]',
onRequest: () => {
cy.contains('request was invoked').should('exist')
},
})
我正在尝试使用cypress自动化一个网站,我遇到了一个问题,在这里我必须处理下面的标签。单击后,将打开新窗口,该窗口将从测试运行程序中显示
a href=“javascript:ContextTradeMenuPopup('View/Edit Trade')”>View/Edit
贸易/a
我知道Cypress不支持多窗口,但作为一种解决方法,我可以获取href标记并复制URL,并可以在同一个运行程序中打开URL,但在上面的示例中没有URL
任何人都可以在Cypress中使用不同的方法来处理多
在阅读了大量文档并试图找到问题的解决方案后,我什么也没找到,所以我们开始吧
我在测试我的端到端流时遇到以下问题,我正在测试的流确实会不断地启动请求,但有一种情况下,我希望这些请求会停止。换句话说,如果发出请求,我想抛出一个错误,如果没有任何请求,我想在超时时继续出错
cy.wait('@my-request', { timeout: 20000 })
如果应用程序工作正常,我预计会超时,所以我尝试这样做
cy.wait('@my-request', { timeout: 20000 })
\在中创建了一个Cypress Testscript,并设置为在循环中执行,就像希望在fixture json中使用多组testdata执行一样。如果您关闭并看到cy.fixture仅适用于第一个条目,并使用json中的first条目执行两次测试(testdata文件)。任何关于如何将数组的迭代与fixture一起包括在内的帮助都会很有帮助
var Launchindex = 0;
for (Launchindex = 0; Launchindex < 2; Launchindex ++
大家好,我是新来的柏树。从图像中,我有两个下拉属性,在“安全信息”中有一个选项,可以将安全添加到冻结中。如果我添加更多证券,它将显示在表视图中。目前有两个安全添加到冻结(7213572149)。在“重新平衡网格”部分,我有另一个表,其中包含更多关于securityiD的详细信息。现在我必须从上面的两个安全ID检查下表中是否存在,以及Start$value是否正确。我可以从第一个表中提取securityID并将其存储在变量中,但是如何使用第二个表检查这些securityID呢
我已经手动声明了一个
我在cypress中使用cucumber,我有多个功能文件。我的一个功能文件依赖于另一个功能文件。是否可以在要素文件中调用不同的要素文件?
所以为了运行JJ.feature文件,我必须先让它运行test2.feature文件
在这种情况下,我只想运行JJ.feature,这是依赖的
--> integeration folder
|
---> test folder
|
---> l
我试过cy.task('mytask')。然后((id)=>{console.log(id)})
但这没有给我任何关于终端的信息。。。这验证了它是未定义的吗?或者有没有更好更准确的方法来完成此任务?您的任务定义是什么样的?
如何单击除第二个元素外的所有按钮?
这是我的密码:
it('Click menu buttons one by one', function () {
cy.visit('http://localhost:25000/', { timeout: 300000 })
cy.wait(10000)
cy.get('.dijitReset.dijitInline.dijitMenuItemLabel.dijitMenuItem', { timeout: 200000}) .c
我试图测试从Cypress下载的文件的内容,但我不知道文件的名称。下载文件时有没有办法知道文件名
我查看了Cypress文档,找不到任何符合我需要的东西
我得到了表单,当我触发时,点击提交按钮,这会导致刷新当前页面。在那之后,我想做一些断言。我如何知道该页面已完成刷新,并且可以开始搜索元素
cy.get('#formButton').click() // adds new item and refresh page
// do assertions on page
5种方式:
1) 在不刷新的情况下制作SPA,更改DOM后使用回调/承诺
2) 设置cookie,刷新页面,每次页面加载时使用条件如下:
if (existsRefreshCooki
我有一个简单的规范,可以访问站点并按如下方式登录:
it ('Visits the site as logged in user', function () {
cy.visit('http://example.com')
cy.get('#username').type(Cypress.env('username'))
cy.get('#password').type(Cypress.env('password'))
cy.get('#submit').click()
cy
我正试图截短一个GET请求,但到目前为止没有成功。目前的主页相当沉重,一个有背景视频的英雄部分。我想为这个视频存根这个请求,所以它将只加载一个空字符串。当我运行下面的代码时,我可以看到它正试图逐帧获取视频,因此它有超时的风险。我怎样才能做到这一点
describe('Homepage', () => {
beforeEach(() => {
cy.app('clean');
cy.viewport('macbook-13');
cy.appFactori
所有的文档似乎都在解释如何在下拉列表中选择一个值,但我需要声明选择了一个特定的值,而不做任何更改。
我是Cypress的新手,所以还没弄明白
我尝试了cy.get('.selector')。包含('expected string')但测试失败,并显示此错误消息--
预计在60天后的月1日具有值,但该值为“”
也没有帮助
Fwiw,选择器是Vuetify的v-select
有什么建议吗?假设:
<select><option value="Alice">Bob</o
我们的预订页面上有一个元素”。行程日期[日期时间]:last“,它显示行程中最后一次航班的日期(例如7月7日星期二)。为了进行Cypress测试,我需要提取日期(例如7)和月份(例如Jul)
此代码创建const7月7日星期二,但我只需要使用日期和月份。你知道我怎样才能提取它吗
Cypress会自动包含moment.js并将其公开为Cypress.moment
提及
您可以使用Cypress.moment以任何方式提取月份和日期
标记:
cy.get('.date').then(($el) =&
我需要按下按钮并保持大约10秒钟。我该怎么做
我使用了这种结构,但它不能满足我的需要:
button1.eq(2).click({ release:false} );
我认为您需要使用cy.trigger,我不确定click是否有该选项。你可以这样做:
cy.get([your element]).trigger('mousedown')
cy.wait(3000)
cy.get([your element]).trigger('mouseleave')
这将保持点击三秒钟。我不是cy的粉丝
在我们的应用程序中,我们有以下下拉选择器:
<select class="ng-tns-c77-28" aria-hidden="true" tabindex="-1" aria-label="Banana">
<!---->
<!---->
<!---->
<!---->
<!---->
<option class
从排除的部分,ALO元素应该通过此代码移动到选定的部分,但它没有移动
我的代码:
('drag and drop',()=>{
cy.datacy('search').type('BeSt-Derivate AG');
cy.datacy('customerName').should('have.text', ` ${'BeSt-Derivate AG'} `)
.and('be.visible').click().wait(200);
cy.get("ma
单击一个按钮,我将得到一个下拉列表,其中有一个项目列表。我想检查单击按钮后下拉列表需要多长时间。我想使用cypress为此编写一个测试来检查性能。目的是在项目列表包含10万个值时检查应用程序的性能。您可以尝试以下方法:
index2.html:
<div class="many">
</div>
<button id="manyadd">add many</button>
<script>
var prom = () => new
是否可以在Cypress中使用特定语言(如法语)无头运行Chrome
我必须用多种语言运行该套件
我已将此代码添加到plugin/index.js中:
on('before:browser:launch', (browser, launchOptions) => {
if (browser.name !== 'electron') {
const language = config.env.lang || 'en';
launchOptions.pr
在执行代码时,它正在为-cy.get('css').type('pqr.com')抛出TypeError
在Keyboard.firemulatedEvent({{URL}/_-cypress/runner/cypress-u-runner.js:162534:29)上的“”
在Keyboard.simulatedKeydown({{URL}/_-cypress/runner/cypress-u-runner.js:162679:59)
在Keyboard.typeSimulat
在对一个全局DOM进行了多年的端到端测试之后,我发现测试使用插槽的web组件非常困难,如果不是不可能的话。在我解释这个问题之前,我想说的是,我不能改变生成的标记来改善现状
<wc-1 attributes-etc="">
<wc-2 attributes-etc="">
<slot>
<wc-3 attributes-etc="">
<slot
示例:假设我的测试正在运行,并且有一个会话过期弹出窗口在测试执行时随时出现,我们不知道它何时会出现
因此,我想在CYPRESS中找到一种方法或任何类型的侦听器,我可以在全局范围内注册并继续侦听Hooks中的会话过期弹出事件是否有人可以帮助可能是cy.spy将帮助或CYPRESS.promise谢谢您的回复,但我必须像plugin.js一样在全局范围内注册侦听器不打开,在任何特定元素之前或之后理论上,如果您像在第二个链接上写的那样注册它,它将是全局的,尽管这将取决于您编写一个工作命令。我将这样的文
不要告诉任何人,但我们的应用程序还不是单页的。我可以给路线一个别名,但是如何等到导航完成,浏览器安全地进入新页面?您可以在其中添加一些断言:
cy.click(“#SomeButtonToNavigationNewPage”);
cy.location('pathname',{timeout:60000})
.应('include','/newPage');
cy.click(“#您正在连接页面”);
您可以更改默认超时时间(默认为4000毫秒(4秒)),以确保用户导航页面。我在这里放了一个大
请帮助我,我是初学者,有相同的问题,代码,我得到下面的错误
CypressError: cy.then() failed because you are mixing up async and sync code.
我的代码看起来像这样
cy.xpath(LOGOS).then(($ele) => {
cy.eachSeries($ele.get(), (index) => {
return cy.xpath(LOGOS).eq(inde
我有一个从0%到100%的滑块,我想为它编写一个e2e测试。我已经测试了所有我能想到的东西,包括下面的。我没有收到错误消息,但什么也没发生。mousemove似乎在与mousedown相同的位置触发,无论在x坐标中输入什么值。当我使用right代替pageX或pageY而不是实际元素时,mouseEvent会移动几个像素
cy.get('[data-cy="slider"]').trigger('mousedown').trigger('mousemove', { which: 1, page
我正在监视画布中对fillText的调用。我的组件每1000毫秒更新一次。下面是我如何设置的:
在之前的中,我发送渲染画布的数据
在每个之前的中,我获取上下文并将spy设置为textSpy变量,所有方便的方法都会捕获该变量
在测试中,我调用了便利方法:
发送一些新数据(假设是序列号为1的序列)
等待画布绘制完成(通过等待也呈现为html的“系列1”)
断言已使用与序列的长度和id号对应的文本调用spy
方便的方法可能有点到处都是/很难遵循,因此我希望我的解释能有所帮助:
description
我可以验证文本是否显示在结果页面上的“某处”
it.only('can verify an input element has certain text typed into it', function() {
cy.visit('http://google.com')
cy.get("input[name=q]").type('abc123{enter}') // with or without the {enter}
cy.contains('abc123') // Anywh
CSS属性设置特定图形元素在什么情况下(如果有)可以成为指针事件的目标。
我使用此属性来防止在内容更新时在短时间内与web应用程序的某些部分进行交互
这导致通过Cypress运行端到端测试时出现问题。正确阻止Cypress与指针事件设置为“无”的元素交互。然而,我希望Cypress不要立即失败,而是等待元素变得难以处理。这是禁用的元素、只读的元素、动画元素等的首选项
我的问题是:有没有办法让Cypress将此默认行为应用于指针事件设置为无(或者其指针事件设置为无)的父元素
是否可以列出已打开的选项卡?
情况是:
我点击一个按钮
它生成链接并在新选项卡中打开
我必须导航到此页面并进行一些验证
如果Cypress不支持多选项卡。最好有一个已打开选项卡的列表。因此,我可以导航到它们。根据,Cypress永远不会支持多选项卡。但是,对于您的测试用例,您可以做的是:
检查在新选项卡中打开的链接,如:cy.get('a[href=“/index”]”)。应该('have.attr','target','u blank')
像这样访问href:cy.Visit('/inde
在Cypress中,是否有任何方法可以使用页内对象文件调用自定义命令
自定义命令:
Custom.Commands.add(“createXpath”,()=>{
}
我的页面对象文件:login.js
类登录{
cy.get().type
}
有什么方法可以在login.js中调用createXpath吗
关于什么似乎是问题?您会遇到什么错误?
我有一个类似下面的场景,带有隐藏和显示按钮
当我在输入框中填写一些数据时,显示按钮“其他”按钮处于隐藏模式
下面是代码,请建议我在输入框中输入代码后如何运行我的自动化代码的解决方案
当按钮启用模式时——在输入框中输入out文本
拯救
否则
当按钮禁用模式时——在输入框中输入正确文本后
拯救
所以我尝试了下面的所有场景,但没有任何效果,
cy.get('button')。应('be.disabled')。invoke('show')。应('be.enabled')。包含('Save')。单击()
我需要更改sessionStorage中一个参数的值,但我甚至不确定这是否可以通过Cypress实现。在他们的文档中找不到关于此的任何有用信息
这是我试图用Cypress运行的javascript代码,但没有成功:
var data = JSON.parse(sessionStorage.getItem("vuex"))
data.country = "DE"
sessionStorage.setItem("vuex", JSON.st
我正在寻找一个解决方案,它可以像Playwright中的以下代码一样工作
page.点击('input:right of(:text(“用户名”)));
在Playwright中使用此命令,将单击文本Username右侧的输入元素。我搜索了一会儿,但发现柏树中似乎没有方便的等价物。是否有任何方法可以根据元素的位置关系选择元素?我认为您可以使用
cy.contains('Username') // === :text("Username")
.next()
我想测试一下,当我点击一个关闭模态对话框(ng材质)的按钮时,模态不存在
此测试实际上关闭了模态,但它通过了
it('should close the modal when the close button is clicked', () => {
cy.get('#close-new-category').click();
cy.get('#new-category').should('exist');
});
此测试也有效
it('sh
我非常喜欢cypress.io的端到端测试
然而,我用玩笑。我想用玩笑代替摩卡咖啡。我可以用cypress io来开玩笑而不是摩卡吗?在写这篇文章的时候,需要一些争论:
有关这方面的更多信息:
否则,就必须为jest创建自定义匹配器。根据该线程,他们现在正在考虑将jest支持作为一种工具。还有一种方法可以帮助缩小差距。
对于我的一个web服务测试,我需要读取一个xml文件,并将其内容分配给cy.request body。
我怎样才能做到这一点?
我尝试了下面的方法,但未能成功地将XML传递给正文。
请让我知道
例如:
我建议这样做:
准备用于获取XML的函数
函数fetchXML(文本){
返回请求({
url:“我的url”,
方法:“POST”,
正文:正文,
标题:{…}
})
}
然后调用readFile并传递给promise回调结果
cy
.readFile('Desktop/Testing/W1.
我得到了一个元素树,每个元素都有一个切换图标来扩展它-我的意图是单击对应于元素的切换图标,并为ex“TIME PERIODS”创建一个文本
目前我写的代码如下,有更好的方法吗?
请看我的元素结构截图
cy.get('.tree-node',{ timeout: 60000 }).contains('TIME PERIODS',{force: true}).parent().parent().find('.tree-node-collapsed').click()
方法在Cypress.io中
我有一个React web应用程序,它使用Blockly,我目前正在尝试编写使用Cypress框架的自动测试
Cypress在登录的基本过程中工作得很好,但是一旦Blockly被认为是加载的,它就会开始表现出不一致
大约有一半的时间,应用程序的整个块状部分根本不会显示在Cypress视口中。有时会出现,有时不会,我不确定是什么原因导致它,或者如何真正复制它,它似乎是随机的
是它正确加载时的外观
就是当它不能正常加载时的样子
起初,我认为它不起作用的原因是Blockly的资源没有加载,Cypres
我有一个用户名/密码输入,带有“显示密码”按钮,单击该按钮时显示密码文本;但前提是你拿着它。一旦释放单击,它将再次隐藏密码
错误的测试方法是:
it('show password word', () => {
cy.get('[data-cy="login-password-input"]').should('have.type', 'password')
cy.get('[data-cy="show-password-btn"]').click()
cy.ge
在我的支持文件夹中,我有一个名为action的文件夹。其中有一个名为login-action.js的文件。此文件中的代码如下所示:
class LoginActions{
login(usernameField, passwordField, username, password) {
cy.get(usernameField).first().type(username);
cy.get(passwordField).last().type(pa
当从函数(从command.js/Page object class)返回任何单个/组值时,出现以下错误:“Cypress检测到您在自定义命令中调用了一个或多个cy命令,但返回了不同的值。”。我搜索了不同的选项,比如“Warp”,然后是“但是没有运气”
详情如下:
My Command.js文件:
Cypress.Commands.add("getconstantvalue", () => {
const todaysDateTime = Cypress.mom
我们有reCaptcha,我正在尝试使用cypress veriosn 3.8.0运行自动测试
下面是要单击的代码
cy.wait(500);
cy.get('#g-recaptcha *> iframe')
.then($iframe => {
const $body = $iframe.contents().find('body');
cy.wrap($body)
.find('.recap
我试图在请求体上断言,以确保正确的新测试卡作为订单的一部分通过
it("User clicks confirm & pay button to complete order", () => {
cy.intercept("/api/checkout/payandcommit").as("placeOrder");
cy.placeOrderAndPay();
cy.wait("@place
1 2 3 4 5 6 ...
下一页 最后一页 共 11 页