Automated tests Cypress:Mocha自动化框架:自定义命令:自定义命令未运行未在测试中运行

Automated tests Cypress:Mocha自动化框架:自定义命令:自定义命令未运行未在测试中运行,automated-tests,mocha.js,cypress,Automated Tests,Mocha.js,Cypress,我创建了一个自定义命令,该命令将自动将项目添加到购物车。在将代码添加到自定义命令之前,我在测试中运行了rand代码,它工作得非常好。我添加了“addtoshoppingcart”代码,并创建了名为AddToCart的自定义命令。我将该命令添加到测试规范文件中,并尝试运行测试 虽然原始自动化代码是正确的,因为我在测试规范文件中成功地创建并运行了它,但它不会运行,也不会作为自定义命令执行,因此测试将挂起,也不会将项目添加到购物车中。你可以看 我一直在看这段代码,我完全不知道我可能出了什么问题。我想用

我创建了一个自定义命令,该命令将自动将项目添加到购物车。在将代码添加到自定义命令之前,我在测试中运行了rand代码,它工作得非常好。我添加了“addtoshoppingcart”代码,并创建了名为AddToCart的自定义命令。我将该命令添加到测试规范文件中,并尝试运行测试

虽然原始自动化代码是正确的,因为我在测试规范文件中成功地创建并运行了它,但它不会运行,也不会作为自定义命令执行,因此测试将挂起,也不会将项目添加到购物车中。你可以看

我一直在看这段代码,我完全不知道我可能出了什么问题。我想用另一双眼睛看看

提前谢谢

我完全搞不懂这怎么会发生

使用自定义命令测试规范

> /// <reference types="Cypress" />
>  
>      describe('My test feature',function() {
>  
>     beforeEach(function(){
>        cy.fixture('example').then(function(data){ 
>  
>              this.data=data 
>  
>             })
>  
>     })
>  
>     
>  
>     it('my first test scenario', function(){
>    
>         cy.visit('https://rahulshettyacademy.com/angularpractice/')
>         cy.get('input[name="name"]:nth-child(2)').type(this.data.name)
>         cy.get('select').select(this.data.gender)
>  
>         cy.get('input[name="name"]:nth-child(1)').should('have.value',this.data.name
> )  
>         cy.get('input[name="name"]:nth-child(2)').should('have.attr', 'minlength','2')
>         cy.get('input[id=inlineRadio3]').should('be.disabled')
>  
>         //custom command
>         cy.get('a[href="/angularpractice/shop"]').click()
>         cy.AddToCart('blackberry')
>       
>  
>    
>      })//end of test case 
>    
>  
>  
>      })//end of describe
这个条件如何:如果自定义命令中有$e1.text.includeProductName?我的意思是我可以在视频中看到Blackberry,但Blackberry是您的参数:

cy.AddToCart'blackberry' 大小写很重要,因此键入cy.AddToCart'Blackberry'可能会解决您的问题。

这个条件如何:如果自定义命令中有$e1.text.includeProductName?我的意思是我可以在视频中看到Blackberry,但Blackberry是您的参数:

cy.AddToCart'blackberry'
大小写很重要,因此键入cy.AddToCart'Blackberry'可能会解决您的问题。

您可以使用正则表达式创建不区分大小写的搜索。最简单的方法是使用.contains命令

另外,将整个卡片作为目标,而不是标题。contains将在卡片的所有子级中查找文本。那么按钮就更容易找到了

它“将项目添加到购物车”,=>{ Cypress.Commands.AddToCart,产品名称=>{ 包含'div.card',新的RegExpproductName'i' 。每张$card=>{ cy.wrap$卡 .查找“按钮”。包含“添加” 点击 } } cy.viewport12001200 赛维isithttps://rahulshettyacademy.com/angularpractice/shop; constProductName=blackberry; cy.get'a'。包含“签出0” cy.AddToCartproductName cy.get'a'。包含'Checkout 1' };
可以使用正则表达式创建不区分大小写的搜索。最简单的方法是使用.contains命令

另外,将整个卡片作为目标,而不是标题。contains将在卡片的所有子级中查找文本。那么按钮就更容易找到了

它“将项目添加到购物车”,=>{ Cypress.Commands.AddToCart,产品名称=>{ 包含'div.card',新的RegExpproductName'i' 。每张$card=>{ cy.wrap$卡 .查找“按钮”。包含“添加” 点击 } } cy.viewport12001200 赛维isithttps://rahulshettyacademy.com/angularpractice/shop; constProductName=blackberry; cy.get'a'。包含“签出0” cy.AddToCartproductName cy.get'a'。包含'Checkout 1' };
这太棒了,我一定会将修改添加到我的代码中。这很有道理。我将参考此代码布局,因为它比我的培训材料中的布局更好。非常感谢你,不客气。那太棒了,我一定会把修改添加到我的代码中。这很有道理。我将参考此代码布局,因为它比我的培训材料中的布局更好。非常感谢不客气,谢谢你的回复。我不认为这是你的意图,但“可能解决你的问题”一开始被认为是突然的。然而,它可能会误解书面形式的东西,因为没有音高和音调。不过我真的很感谢你花时间帮助解决这个问题。从这一点起,我会意识到一些事情。@fypnlp:那只是你对书面文本的解释。“可能”只是用在它最常见的意义上,那就是在句子中注入一些不确定性,这是我的意图,因为我不是真的坐在你的笔记本电脑前,可能还有另一个我不知道的问题。你有一个观点,我有另一个观点。我们可以同意在主观的解释上存在分歧——它没有那么深刻。祝你今天愉快。谢谢你的回复。我不认为这是你的意图,但“可能解决你的问题”一开始被认为是突然的。然而,它可能会误解书面形式的东西,因为没有音高和音调。不过我真的很感谢你花时间帮助解决这个问题。从这一点起,我会意识到一些事情。@fypnlp:那只是你对书面文本的解释。“可能”只是用在它最常见的意义上,那就是在句子中注入一些不确定性,这是我的意图,因为我不是真的坐在你的笔记本电脑前,可能还有另一个我不知道的问题。你有一个观点,我有另一个观点。我们可以同意 萨格里的主观解释——没有那么深刻。祝你有美好的一天。
> // *********************************************** // This example
> commands.js shows you how to // create various custom commands and
> overwrite // existing commands. // // For more comprehensive examples
> of custom // commands please read more here: //
> https://on.cypress.io/custom-commands //
> *********************************************** // // // -- This is a parent command -- // Cypress.Commands.add('login', (email, password)
> => { ... }) //   Cypress.Commands.add("AddToCart", (productName) => { 
>  
>     cy.get('h4.card-title').each(($e1, index, $list) =>{//this go the the array of items for sale using an array
>  
>         if($e1.text().includes(productName))//find the product in the script
>       
>         {
>               cy.get('button.btn.btn-info').eq(index).click()//when you have found the product 'add to cart' button
>     
>         }
>     })   })
>     // // -- This is a child command -- // Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject,
> options) => { ... }) // // // -- This is a dual command -- //
> Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject,
> options) => { ... }) // // // -- This will overwrite an existing
> command -- // Cypress.Commands.overwrite('visit', (originalFn, url,
> options) => { ... })