赛普拉斯获得href属性

时间:2018-01-19 19:37:39

标签: javascript cypress

我有一个测试用例,其中有一个链接在新标签页中打开,由于cypress不支持多标签,我想获得该链接的href属性,然后在同一个标​​签页中打开它,我试图这样做,但由于某种原因,它不起作用。

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');
});

3 个答案:

答案 0 :(得分:26)

下面的代码应该做你想要实现的目标。还有一整个recipe with suggestions on how to test links that open in new tabs

it('Advertise link should refer to Contact page', () => {
   cy.get('div.footer-nav > ul > li:nth-child(2) > a')
     .should('have.attr', 'href').and('include', 'contact')
     .then((href) => {
       cy.visit(href)
     })
})

我还建议阅读赛普拉斯文件,了解分配和使用变量的最佳方法:https://on.cypress.io/variables-and-aliases

答案 1 :(得分:3)

解决方案1:invoke("attr", "href")

导航到元素的href属性中指定的URL:

cy.get(selector)
  .invoke('attr', 'href')
  .then((href) => {
    cy.visit(href)
  })
});

参考:https://docs.cypress.io/api/commands/invoke.html#Function-with-Arguments


解决方案2:阻止内容在新标签页中打开。

从锚元素中删除目标属性,然后单击该属性以导航到同一选项卡中的URL:

cy.get(selector).invoke('removeAttr', 'target').click()

参考:https://docs.cypress.io/examples/examples/recipes.html#Tab-Handling-and-Links

答案 2 :(得分:0)

我解决了这个问题:

首先-检查href是否具有正确的值

第二个-创建另一个访问该href的测试

在我的案例中,href的值是硬编码的。