我试图获取警报来断言文本,但问题是,当执行 cy.get(.alert) 命令时,由于某种原因,警报不再可见,即使它在页面上显示了几个小时秒,以及 cy.get(.alert) 之后
跑步者: 在 cy.wait 在 cy.get('.alert') 在 cy.get('.alert') 之后 超文本标记语言
我的代码:
cy.intercept('POST', Cypress.env('backdev3URL')+'/bap/one_sst_bap/create').as('createResponse')
cy.readFile('cypress/fixtures/BAPdata.json').then(BAPdata => {
cy.readFile('cypress/fixtures/PurchaseData.json').then(PurchaseData => {
cy.wait('@tableRequest')
cy.get('#subcontractors_datatable tbody').find('tr td:nth-child(1)').each((row,index) => {
if(row.text().includes("ABJ MENUISERIE")){
cy.get('#subcontractors_datatable tbody tr').eq(index).find('td:nth-child(2)').then(Nb => {
BAPdata.BAPnumber = Nb.text()
cy.writeFile('cypress/fixtures/BAPdata.json', BAPdata)
})
cy.get('#subcontractors_datatable tbody tr').eq(index).contains('button', 'BAP').click()
}
})
cy.wait('@createResponse').then(() => {
cy.get('.alert').should('contain',
'Le BAP N°'+PurchaseData.BDCid+year+month+day+' pour le sous traitant avec ID '+PurchaseData.BDCid+' a été créé avec succés')
})
var date = PurchaseData.BDCdate.split(' ')[0].replace(/\//g, ' ')
var day = date.split(' ')[0]+'1'
var month = date.split(' ')[1]
var year = date.split(' ')[2].replace(/20/, '')
const creationDate = require('dayjs')
BAPdata.BAPid = Number(BAPdata.lastBAPid)+Number(1)
BAPdata.SstBAPnumber = PurchaseData.SSTid+year+month+day
BAPdata.BAPdate = creationDate().format('DD/MM/YYYY')
cy.writeFile('cypress/fixtures/BAPdata.json', BAPdata)
})
})
谢谢!
断言失败,因为警报中显示的数据存在差异
PurchaseData.BDCid
在灯具中为 642705
,但在警报中为 20577
PurchaseData.BDCid+year+month+day
有一些未定义的值
您可能只需检查字符串的一部分,以确保警报发生并且是正确的。
cy.get('.alert')
.should('contain', 'pour le sous traitant avec ID') // enough to identify
但是如果你想用实际数据进行测试,你应该拦截 POST 请求并使用固定装置中相同的值进行存根
PurchaseData.json
。
还要在
cy.wait(1000)
之前除掉cy.get('.alert')
。