Я хочу использовать одну переменную в двух разных функциях. Точнее, я хочу получить номер (в виде строки) метки и установить его в поле ввода. После этого я проверяю другую метку для правильного (приведенного) текста.
Я написал две функции, которые работают правильно (выполняются отдельно), но я хочу использовать значение (хранящееся в переменной) первой функции внутривторая функция.
Итак, я попытался соединить функции вместе, но затем Cypress не находит заданный csspath '#sQuantity', потому что Cypress указывает (другую область) на элемент в таблице и на мой элементне принадлежит таблице. Заданное значение переменной 'txtAmountColumn' первой функции используется во второй функции для некоторых вычислений.
let txtAmountColumn
let txtPackPriceColumn
let txtDiscountColumn
it('get some values', function() {
//go to page
cy.loadpage(txtUrl)
//find product box
cy.get('.ProductSelectionBox table').within(($scaleTable) => {
//find table of scaled discount
cy.get('tbody > tr').eq(1).within((rowTable) => {
//get second row of table
let txtRowTable = rowTable.text()
//get first column (amount) of row
cy.get('td').eq(0).then((lineOfTable) => {
let txtValueOfFirstColumn = lineOfTable.text()
txtAmountColumn = txtValueOfFirstColumn.match(/\d{1,}/)[0]
cy.log(txtAmountColumn)
})
//get second column (price of pack price) of row
cy.get('td').eq(1).then((lineOfTable) => {
let txtValueOfSecondColumn = lineOfTable.text()
txtPackPriceColumn = txtValueOfSecondColumn.match(/[0-9]*,[0-9]*/)[0]
cy.log(txtPackPriceColumn)
})
//get third column (discount in percentage) of row
cy.get('td').eq(2).then((lineOfTable) => {
let txtValueOfThirdColumn = lineOfTable.text()
txtDiscountColumn = txtValueOfThirdColumn.match(/\d{1,}/)[0]
cy.log(txtDiscountColumn)
})
})
})
})
// ToDo: integrate this function within previous function because I need a dynamic value for txtAmount
it('calculate the price', function() {
let txtAmount = 10 //replace this hardcoded value with the determined value of txtAmountColumn
let txtPackPriceColumn = 9.99
//go to the sale
cy.loadpage(txtUrl)
//set amount of products
cy.get('#sQuantity').type(txtAmount).then(() =>{
cy.get('.MainProductCalculatedPriceOverview').then((labelPrice) => {
let txtPrice = labelPrice.text()
//calculate expected price
let calculatedPrice = txtAmount * txtPackPriceColumn
//calculate expected VAT
let calculatedVat = Math.round((calculatedPrice * 1.19)*100)/100
})
})
})
Если я соберу их вместе
<p>CypressError: cy.type() can only accept a String or Number. You passed in: 'undefined'</p>
Как я могу использовать'txtAmounColumn' для моего расчета (в обеих функциях)?