Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 柏树试验的随机化元素选择_Javascript_Cypress_E2e Testing - Fatal编程技术网

Javascript 柏树试验的随机化元素选择

Javascript 柏树试验的随机化元素选择,javascript,cypress,e2e-testing,Javascript,Cypress,E2e Testing,目前正在测试一个本地电影预订网站,在那里我必须为选定的电影输入一定数量的门票。这里是附加屏幕的截图- 用于重现问题的存储库- 克隆回购协议 进入client目录并执行npm i 从根目录运行npm start Webapp将在localhost:3000打开 我希望能够以一种随机的方式输入所选电影的电影票,这样它可以从四部电影票中选择一个随机类别,然后输入票号,比如2 现在,我可以通过以下方式硬编码定位器来填写票证类别- cy.get('div.tickets-info > div:

目前正在测试一个本地电影预订网站,在那里我必须为选定的电影输入一定数量的门票。这里是附加屏幕的截图-

用于重现问题的存储库-

  • 克隆回购协议
  • 进入
    client
    目录并执行
    npm i
  • 从根目录运行
    npm start
  • Webapp将在
    localhost:3000打开
  • 我希望能够以一种随机的方式输入所选电影的电影票,这样它可以从四部电影票中选择一个随机类别,然后输入票号,比如2

    现在,我可以通过以下方式硬编码定位器来填写票证类别-

      cy.get('div.tickets-info > div:nth-child(1) > span > b').type(3,{force:true});
    
    输入<代码>初级车票
    类别的车票计数。我希望能够在四个类别中的任意一个类别中随机输入票证,而无需硬编码类别定位器


    PS-存储库中还包含cypress测试,可以使用npm运行测试运行这些测试。您可以根据以下内容对类别进行随机化:


    const picked=Math.floor(Math.random()*3);//这会给你一个0-3之间的随机值;
    //使用模板字符串文字-我们可以将其添加到
    cy.get(`div.tickets-info>div:n子项(`${pickets}')>span>b`)。键入(3,{force:true})
    
    从拾取-您可以拥有与类别相关的元素数组:

    const categories=[“初级”、“学生”、“普通”、“高级”]
    
    您还可以将
    类别
    中的票证的值作为对象,并将其用于计算总数

    常量类别=[{
    类型:“初级”,
    价值:5
    }, {
    输入:“学生”,
    价值:3
    }, {
    类型:“正常”
    数值:10
    }, {
    类型:“高级”,
    价值:3
    }]
    
    您可以说,使用拾取的值来计算总金额

    const value=类别[picked]。值*随机金额;
    cy.get(“.sum字段标签:第n个子项(1)”)。应(“包含”,值)//总计
    
    我需要对我们的应用程序执行同样的操作,因此我想出了一个简单的方法来实现这一点。下面是我在
    cypress/support/commands.js中找到的代码:

    Cypress.Commands.add('any', { prevSubject: 'element' }, (subject, size = 1) => {
      return cy.wrap(subject).then(elementList => {
    
        // this line enables me to use this command with either cy.get() or cy.wrap()
        elementList = (elementList.jquery) ? elementList.get() : elementList;
    
        elementList = Cypress._.sampleSize(elementList, size);
        elementList = (elementList.length > 1) ? elementList : elementList[0];
    
        return cy.wrap(elementList);
      });
    });
    
    我还可以在自定义命令中使用自定义日志记录。为了清晰起见,我从上面的代码中删除了它

    然后在测试中使用它,就像其他任何cy命令一样:

    cy.get('div.tickets-info > div > span > b').any().type(3,{force:true});
    
    或者,如果您需要多个:

    cy.get('div.tickets-info > div > span > b').any(2).each(element => {
        cy.wrap(element).type(2, { force: true });
    });
    

    const picked=Math.floor(Math.random*3)返回一个
    NaN
    。我使用'const picked=Math.floor(Math.random()*3)+1修复了它;抱歉,那是个打字错误-晚上做得太晚了