我有下面的方法。我希望if语句中的所有内容都反复执行,直到常量'oneMonth‘中的内容变为真,直到Cypress在页面中找到特定日期(使用日期-fns库,并且'oneMonth’存储的日期比当前日期晚30天以上)。
如果这句话重复了几次,而不是像现在这样重复一次,我怎么能把它画成这样呢?
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代码
<div class="box select-box">
<h3 class="subtitle subtitle-create-account">Select an appointment date & 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>我希望我已经向你提供了所有必要的细节。谢谢!
发布于 2022-06-22 12:33:42
您可以尝试递归,由柏树插件提供,以迭代您的命令,直到它被计算为真。这个插件的优点是,您可以通过限制迭代时间、迭代次数或延迟来控制它的行为,以防应用程序需要一些时间来呈现某个组件。
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
}
) 发布于 2022-06-22 14:06:14
我将尝试以下几点:
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天后的日期。
https://stackoverflow.com/questions/72713182
复制相似问题