为啥 cypress 无法识别我们是不是给出完整的类名

Posted

技术标签:

【中文标题】为啥 cypress 无法识别我们是不是给出完整的类名【英文标题】:Why cypress fails to identify if we give full class name为什么 cypress 无法识别我们是否给出完整的类名 【发布时间】:2020-02-22 10:00:04 【问题描述】:

如果我给出完整的类名,例如:title-text-panel-container class-about-benefits > ul cypress 无法识别元素并抛出以下错误 CypressError:重试超时:应找到元素:'.title-text-panel-container class-about-benefits > ul',但从未找到它。 如果我们在测试中给出full class name,为什么 cypress 无法识别?但是它通过了测试,因为我们按照测试 2 给出了类名。

测试 1: 失败

cy.get('.title-text-panel-container class-about-benefits > ul').find('li').its('length').should('be.gte', 1);

测试:2 次通过

cy.get('.title-text-panel-container > ul').find('li').its('length').should('be.gte', 1);

【问题讨论】:

你试过用'.'第二节课前cy.get('.title-text-panel-container .class-about-benefits > ul') 我总是使用较长的形式cy.get('[class^=something]') - 表示课程列表以“某物”开头,或cy.get('[class*=something]') - 表示课程列表包含“某物”。 第二堂课之前我没有尝试.,我认为它被认为是单节课。无论如何,感谢您的解释。第二个或第三个选项是更简单的更短版本cy.get('[class^=something]')cy.get('[class*=something]') 【参考方案1】:

.classA .classB 选择器暗示classBclassA 的后代。如果要指定单个 DOM 元素的多个类(以增加特异性),则不能在它们之间添加空格:.classA.classB

在你的情况下,它会是:

cy.get('.title-text-panel-container.class-about-benefits > ul').find('li').its('length').should('be.gte', 1);

【讨论】:

【参考方案2】:

试试 cy.get('.title-text-panel-container .class-about-benefits > ul')

【讨论】:

Eric99 已经在上面的 cmets 中提供了答案。谢谢,很棒的帮助。 这是不正确的选择器层次结构;见我的answer

以上是关于为啥 cypress 无法识别我们是不是给出完整的类名的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MSYS 无法识别 AM_INIT_AUTOMAKE 中的 tar-ustar 选项?

在 Cypress 中优化选择器

Cypress:类型组合键

为啥通过 cypress-firebase npm 模块登录时 firebase 未定义?

第一次提问:为啥'py'被识别但'python'不被识别?在终端中运行的快捷方式? 'echo %PATH%' 给出巨大的路径?

为啥 SSL 握手会给出“无法生成 DH 密钥对”异常?