以自定义命令默认使用data-cy?

问题描述 投票:0回答:2
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

    
如果您在项目中添加

即可测试库
cypress cypress-custom-commands
2个回答
3
投票
cy.get()

属性上获得一堆命令

bytestid-通过data -Testid属性查找
GETBYTESTID

QueryByTestId
getAllByTestId

2
投票
QueryAllByTestId

findbytestid findallbyTestId


请参阅cheatsheet

以获取差异。

如果您厌倦了键入
    Cypress.Commands.add('attr', { prevSubject: false }, (attr) => { return cy.get(`[data-cy="${attr}"]`) }) cy.attr('name')
  • ,那么大量的选择方法可能会更加烦恼您。
  • 有趣的部分是关于哪种选择方法最适合测试的讨论。
  • 请参阅
  • 优先
  • 基于指导原则,您的测试应与用户尽可能多地与代码(组件,页面等)进行交互。
  • ,他们将它们放在列表的底部
  • 用户看不到(或听到)这些,因此仅适用于您无法按角色或文本匹配或没有意义的情况(例如,文本是动态的)。
cypress最佳实践中描述了基于属性(例如
data-testid

)的UI元素的选择,here。 也是一个示例,说明如何创建自定义命令以选择一种选择元素的通用方法

here

.

示例看起来像:

cy.get('[data-cy=name]')

第一个命令查找精确的watibute匹配。第二个查找包含一个thul提供的元素,就像提供的参数一样。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.