首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在柏树循环中执行if条件

在柏树循环中执行if条件
EN

Stack Overflow用户
提问于 2022-06-22 09:45:30
回答 2查看 91关注 0票数 0

我有下面的方法。我希望if语句中的所有内容都反复执行,直到常量'oneMonth‘中的内容变为真,直到Cypress在页面中找到特定日期(使用日期-fns库,并且'oneMonth’存储的日期比当前日期晚30天以上)。

如果这句话重复了几次,而不是像现在这样重复一次,我怎么能把它画成这样呢?

代码语言:javascript
运行
复制
    const today = new Date();
    var featureDay = format ( addDays (today, 30), "MMMM dd")

    cy.get('.calendar-row').then(($el) => {
        const oneMonth = $el.text().includes(featureDay)
        if(!oneMonth){
            cy.intercept('APILINK*').as('next')
            cy.contains('Next week').click();
            cy.wait('@next')
        }
    })

HTML代码

代码语言:javascript
运行
复制
<div class="box select-box">
   <h3 class="subtitle subtitle-create-account">Select an appointment date &amp; time</h3>
   <p><i class="text-note">These are the current remaining availabilities.</i></p>
   <div class="row">
      <div class="col-lg-12 col-xs-12 form-row head-calendar">
         <div class="head-selected-week"> June 22 - June 25 </div>
         <div class="wrap-navigation"><a class="nav-link disabled" href="javascript:void(0)" ng-reflect-klass="nav-link" ng-reflect-ng-class="[object Object]"><i class="material-icons">arrow_back</i><span>Previous week</span></a><a class="nav-link next" href="javascript:void(0)" ng-reflect-klass="nav-link next" ng-reflect-ng-class="[object Object]"><span>Next week</span><i class="material-icons">arrow_forward</i></a></div>
      </div>
   </div>
   <div class="row">
      <!--bindings={
         "ng-reflect-ng-for-of": "[object Object],[object Object"
         }-->
      <div class="col-lg-12 col-xs-12 form-row calendar-row ng-star-inserted">
         <h4 class="cal-row-date">Thursday, June 23</h4>
         <!--bindings={
            "ng-reflect-ng-for-of": "[object Object],[object Object"
            }-->
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:45 PM </span></label></div>
         <!--bindings={
            "ng-reflect-ng-if": "false"
            }-->
      </div>
      <div class="col-lg-12 col-xs-12 form-row calendar-row ng-star-inserted">
         <h4 class="cal-row-date">Friday, June 24</h4>
         <!--bindings={
            "ng-reflect-ng-for-of": "[object Object],[object Object"
            }-->
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 12:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 12:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 12:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 12:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 1:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 1:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 1:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 1:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 2:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 2:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 2:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 2:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 3:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 3:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 3:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 3:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 11:00 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 11:15 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 11:30 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 11:45 AM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 12:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 12:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 12:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 12:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 1:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 1:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 1:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 1:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 2:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 2:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 2:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 2:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 3:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 3:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 3:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 3:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 4:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 5:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 6:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 7:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 8:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 9:45 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:00 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:15 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:30 PM </span></label></div>
         <div class="md-radio-tab ng-star-inserted"><input name="r" type="radio" id=""><label for=""><span> 10:45 PM </span></label></div>
         <!--bindings={
            "ng-reflect-ng-if": "false"
            }-->
      </div>
   </div>
   <div class="row">
      <!--bindings={
         "ng-reflect-ng-if": "false"
         }-->
   </div>
   <div class="row">
      <!--bindings={
         "ng-reflect-ng-if": "false"
         }-->
   </div>
   <div class="row">
      <!--bindings={
         "ng-reflect-ng-if": "false"
         }-->
   </div>
</div>

我希望我已经向你提供了所有必要的细节。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-06-22 12:33:42

您可以尝试递归,由柏树插件提供,以迭代您的命令,直到它被计算为真。这个插件的优点是,您可以通过限制迭代时间、迭代次数或延迟来控制它的行为,以防应用程序需要一些时间来呈现某个组件。

代码语言:javascript
运行
复制
import { recurse } from 'cypress-recurse';

...

const today = new Date();
const featureDay = format ( addDays (today, 30), "MMMM dd")

recurse (
    () => cy.get('.calendar-row').invoke('text'),
    (text) => text === featureDay,
    {
      post(){
         cy.intercept('APILINK*').as('next')
         cy.contains('Next week').click();
         cy.wait('@next')
      },
        log: false
        timeout: 35000
    }
  )  
票数 1
EN

Stack Overflow用户

发布于 2022-06-22 14:06:14

我将尝试以下几点:

代码语言:javascript
运行
复制
const today = new Date();
const featureDay = format ( addDays (today, 30), "MMMM dd")
cy.get('.calendar-row')
  .filter(`:contains("${featureDay}")`)
  .each( ($el) => {
  cy.intercept('APILINK*').as('next')
  cy.contains('Next week').click();
  cy.wait('@next')
  .then( (response) => {
    expect(response.statusCode).to.eq(200)//Asserting for the statusCode is not needed but would recommend
  })
  })

Im不能100%确定这是否会工作,因为我无法重新创建变量featureDay。我假设您正在尝试以"MMMM“格式从new Data()筛选30天的日期。在您发布的HTML中,您是否100%确定此查询将返回多个元素。<div class ="head-selected-week"> June 22 - June 25 </div显示,h4 class="cal-row-date"的唯一可能日期是6月22-25日。另一种方法是,如果您选择.calendar-row,子h4 class="cal-row-date将永远不会包含从新Date()开始30天后的日期。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72713182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档