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

如何解决Cypress:Mocha 自动化框架:自定义命令:自定义命令未运行未在测试中运行

我创建了一个自定义命令,可以自动执行将商品添加到购物车的过程。我在测试 PRIOR 之前运行了 rand 代码,将其添加自定义命令中,并且运行良好。我添加了“添加到购物车”代码并创建了名为 AddToCart自定义命令。我将命令添加到我的测试规范文件中并尝试运行测试。

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

我一直在查看这段代码,但我对自己可能出错的地方感到非常困惑。我很想再看一双眼睛。

提前致谢。

我很困惑这是怎么发生的

使用自定义命令测试规范

> /// <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

自定义命令

> // *********************************************** // 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'},> options) => { ... }) // // // -- This will overwrite an existing
> command -- // Cypress.Commands.overwrite('visit',(originalFn,url,> options) => { ... })

解决方法

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

此外,定位整个卡片而不是标题,.contains() 将在卡片的所有子项中查找文本。然后按钮更容易找到。

it('adds an item to the cart',() => {

  Cypress.Commands.add("AddToCart",(productName) => {

    cy.contains('div.card',new RegExp(productName,'i'))
      .each($card => {
        cy.wrap($card)
          .find('button').contains('Add')
          .click()
      })
  })

  cy.viewport(1200,1200)
  cy.visit("https://rahulshettyacademy.com/angularpractice/shop");

  const productName = "blackberry";

  cy.get('a').contains('Checkout ( 0 )')
  cy.AddToCart(productName)
  cy.get('a').contains('Checkout ( 1 )')

});
,

这个条件如何:if($e1.text().includes(productName)) 在您的自定义命令中?我的意思是我可以在视频中看到“黑莓”,但“黑莓”是你的参数:

enter image description here

cy.AddToCart('blackberry')

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?