为啥 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
选择器暗示classB
是classA
的后代。如果要指定单个 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-firebase npm 模块登录时 firebase 未定义?
第一次提问:为啥'py'被识别但'python'不被识别?在终端中运行的快捷方式? 'echo %PATH%' 给出巨大的路径?