Reputation: 103
I would appreciate some help. I am getting this text from a span: | 1-25 / 10.000 +++ However, I would need to extract just 10.000 How could I split this string? Thank you very much in advance
cy.get('.page-number > span')
.then(($total) => {
const total = $total.text();
cy.log(total);
})
Upvotes: 0
Views: 1048
Reputation: 35724
If you are only trying to assert that the 10.000
is in there, you could do a simple assertion like
cy.get(`.page-number > span`).contains('10.000').should("exist");
// or
cy.get(`.page-number > span`).contains('1-25 / 10.000').should("exist");
or if you want to make sure it's at the end of the string, using regex...
cy.get(`.page-number > span`).contains(/10\.000$/gmi).should("exist");
I fund using the simpler contains().should()
assertions easier.
However if you want make the assertion within the promise, here are some things to keep in mind
cy.get()
will be a jQuery array. So running .text()
on an Array will not work. You can specify using .eq(0)
either inside or outside the promise, and once you have that text, you can do a regEx to retrieve value.cy.get().then
, it will give you the data at-the-time-of-operation. That is, it will not wait for the internal assertion to match. So if you are loading dynamic data, you might find that the text is not popupated yet
cy.get(".page-number > span").then(($total) => {
const total = $total.eq(0).text(); // eq(0) inside promise
cy.log(total.match(/([\d\.]*)$/gmi)[0]);
});
cy.get(".page-number > span")
.eq(0) // eq(0) outside promise
.then(($total) => {
const total = $total.text();
cy.log(total.match(/([\d\.]*)$/gmi)[0]);
});
});
you can adjust the regex to more precisely match your needs. This one gets the last set of numbers (/d
) or ([]
) periods (./
) before the end of the string ($
). your html might include an extra space that's not visible, so you can add an optional space character (/s?
): /([\d\.]*)\s?$/gmi
Upvotes: 1