cy.get('[data-cy=name]')
可以创建一个自定义命令,该命令默认情况下尝试并首先找到数据cy。因此,如果我写了
cy.get('name')
,它将尝试在页面上找到
data-cy="name"
,如果我使用cy.get('.class')
,它将尝试在页面上找到一个带有
class
的类并在页面上找到带有“ id”的ID?
基本上,我只想默认试图首先找到cy.get('#id')
,然后如果我传递其他任何内容,然后像最初一样工作。
这是一个很漂亮的想法,但是如果您尝试多一体,您将倾向于有条件的测试。
我将有一个自定义命令
cy.get()
,并与其他选择器一起坚持
data-cy
data-cy
如果您在项目中添加即可测试库
cy.get()
属性上获得一堆命令
bytestid-通过data -Testid属性查找
GETBYTESTIDQueryByTestIdgetAllByTestId
请参阅cheatsheet以获取差异。
如果您厌倦了键入cypress最佳实践中描述了基于属性(例如
Cypress.Commands.add('attr', { prevSubject: false }, (attr) => { return cy.get(`[data-cy="${attr}"]`) }) cy.attr('name')
- ,那么大量的选择方法可能会更加烦恼您。
有趣的部分是关于哪种选择方法最适合测试的讨论。- 请参阅
优先- 基于指导原则,您的测试应与用户尽可能多地与代码(组件,页面等)进行交互。
- ,他们将它们放在列表的底部
- 用户看不到(或听到)这些,因此仅适用于您无法按角色或文本匹配或没有意义的情况(例如,文本是动态的)。
data-testid
)的UI元素的选择,here。 也是一个示例,说明如何创建自定义命令以选择一种选择元素的通用方法
here.
。示例看起来像:
cy.get('[data-cy=name]')