Как написать значение json, используя переменную в кипарисе
it ('check link', () => {
cy.visit(/)
var link1_value
var link2_value
var datasheet_value
cy.get('[class="classname"]').then(($link1) => {
if ($link1.find('[data-type="link1"]').length>0){
cy.get('[data-type="link1"]').invoke('text').as('link1')
cy.get('@link1').then((link1) => {
link1_value = 'Link1:' + link1
})
}
else {
link1_value= '0'
}
}) //there's another one like this for link2
cy.writeFile('txt.json', { link1: link1_value ,link2: link2_value })
})
Приведенный выше код не работает, поскольку в link1_value нет данных. Как мне добавить значение, чтобы оно отображалось в файле json?
1 ответ
Для начала обернитеcy.writeFile()
в.then()
.
it('check link', () => {
cy.visit('/')
let link1_value
let link2_value
let datasheet_value
cy.get('[class="classname"]').then(($link1) => {
if ($link1.find('[data-type="link1"]').length > 0) {
cy.get('[data-type="link1"]').invoke('text').as('link1')
cy.get('@link1').then((link1) => {
link1_value = 'Link1:' + link1
})
}
else {
link1_value = '0'
}
})
.then(() => { // delays the writeFile until after above code finishes
cy.writeFile('txt.json', { link1: link1_value, link2: link2_value })
})
})
Вы также можете попробовать пакет cypress-if
it('check link', () => {
cy.visit('/')
let link1_value
let link2_value
let datasheet_value
cy.get('[class="classname"]')
.find('[data-type="link1"]')
.if()
.then($link1 => link1_value = $link1.text())
.else()
.then(() => link1_value = '0')
.finally(() => {
cy.writeFile('txt.json', { link1: link1_value, link2: link2_value })
})
})
Без переменных (передача результатов по цепочке)
it('check link', () => {
cy.visit('/')
cy.get('[class="classname"]')
.find('[data-type="link1"]')
.if()
.then($link1 => $link1.text())
.else()
.then(() => '0')
.finally(link1_value => {
cy.writeFile('txt.json', { link1: link1_value, link2: link2_value })
})
})
Со 2-й ссылкой
const getLink = (link) => {
return cy.get('[class="classname"]')
.find(`[data-type="${link}"]`) // backticks to insert "link" parameter
.if()
.then($link => $link.text())
.else()
.then(() => '0')
}
it('check link', () => {
cy.visit('/')
getLink('link1')
.then(link1_value => {
getLink('link2')
.then(link2_value => {
cy.writeFile('txt.json', {
link1: link1_value,
link2: link2_value
})
})
})
})