I have a test case in which i have a link which opens in a new tab, and since cypress doesn't support multi tab, i wanna get href attribute of that link and then open it in the same tab, i`m trying to do it this way, but for some reason it doesn't work.
it('Advertise link should refer to Contact page', () => {
var link = document.querySelector("div.footer-nav > ul > li:nth-child(2) > a").href;
cy.visit(link);
cy.title().should('include', 'Text');
});
The code below should do what you're trying to achieve. There is also an entire recipe with suggestions on how to test links that open in new tabs.
I would also suggest reading through the Cypress document on the best ways to assign and work with variables: https://on.cypress.io/variables-and-aliases
Solution 1:
invoke("attr", "href")
Navigate to the URL specified in the element's href attribute:
Reference: https://docs.cypress.io/api/commands/invoke.html#Function-with-Arguments
Solution 2: Prevent content from opening in a new tab.
Remove the target attribute from the anchor element, then click on it to navigate to its URL within the same tab:
Reference: https://docs.cypress.io/examples/examples/recipes.html#Tab-Handling-and-Links