I'm moving tests from protractor to cypress.
I have two elements like below. I want to get the number and add them and store them in a variable.
<span id="num-2">20</span>
In protractor I wrote it like below
var totalCount =
parseInt(element(by.id('num-1')).getText()) +
parseInt(element(by.id('num-2')).getText());
I can't figure out how to do it in Cypress.
I'm moving tests from protractor to cypress.
I have two elements like below. I want to get the number and add them and store them in a variable.
<span id="num-2">20</span>
In protractor I wrote it like below
var totalCount =
parseInt(element(by.id('num-1')).getText()) +
parseInt(element(by.id('num-2')).getText());
I can't figure out how to do it in Cypress.
Share Improve this question asked Jul 15, 2021 at 18:20 autotestautotest 632 silver badges5 bronze badges 2- Are you planning to assert/expect the two values equal some specific value? It's actually anywhere near as straightforward to save values to a variable within a single test. – Alexander Staroselsky Commented Jul 15, 2021 at 18:57
- yes, I need to assert the total count with another value. – autotest Commented Jul 15, 2021 at 18:59
1 Answer
Reset to default 5You can achieve aliases/variables and get. The trick is that get, invoke, or similar are effectively async and you can't really effectively await
cypress operations. Instead you can get the first number, parse it, get the second number, parse it, add the numbers and assert/expect:
const expectedTotal = 42;
// get element with id #num-1
cy.get('#num-1').then(($num1) => {
// parse text to int/number
const num1 = parseInt($num1.text());
// get element id #num2
cy.get('#num-2').then(($num2) => {
// parse text to int/number
const num2 = parseInt($num2.text());
// expect/assert number total equal to some expected total
expect(num1 + num2).toEqual(expectedTotal);
});
});
Hopefully that helps!