Nut*_*gsa 6 javascript mocha.js cypress
我编写了代码来读取每个 li,然后将其扭曲以获取每个链接。我尝试访问循环中的每个链接并验证每个页面上显示的某些元素。然而,在新页面加载后,cypress 向我抛出 DOM detach 错误。
https://i.stack.imgur.com/0PFTq.jpg
我尝试以多种方式循环并单击每个链接,但没有成功。
我试过这个。
it('test', () => {
cy.visit('https://www.cypress.io/')
cy.get('li.header__NavItem-xi2ch0-6').each(($el, index, list) => {
cy.wrap($el).children().click()
})
})
Run Code Online (Sandbox Code Playgroud)
和这个。
it('test', () => {
cy.visit('https://www.cypress.io/')
cy.get('li.header__NavItem-xi2ch0-6').each(($el, index, list) => {
cy.wrap($el).children().and('have.attr', 'href').then((href) => {
cy.log(href)
cy.visit('https://www.cypress.io/' + href)
})
})
})
Run Code Online (Sandbox Code Playgroud)
但是,cypress 向我抛出 DOM 分离错误。
CypressError: cy.children() 失败,因为该元素已与 DOM 分离。
...
Cypress 需要将元素附加到 DOM 中才能与它们交互。
之前运行的命令是:
cy.wrap()
该 DOM 元素可能在上一个命令和当前命令之间的某个位置分离。
发生这种情况的常见情况: - 您的 JS 框架异步重新渲染 - 您的应用程序代码对事件触发做出反应并删除了元素
您通常需要重新查询元素或添加“防护”,以延迟 Cypress 运行新命令。
小智 6
You can use cy.visit with the href attribute, then write an assertion and go back easily xD
cy.get('li').each((item) => {
const title = item.find('h1').first().text();
const link = item.find('a').first();
cy.visit(link.attr('href'));
cy.get('h1').should('have.text', title);
cy.go('back');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5067 次 |
| 最近记录: |