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