Cypress 通过 aria 角色获取元素

Posted

技术标签:

【中文标题】Cypress 通过 aria 角色获取元素【英文标题】:Cypress get element by aria role 【发布时间】:2021-02-11 07:18:10 【问题描述】:
<form>
    <input type='text' name='user'/>
</form>

通过 aria 角色“文本框”获取输入元素。我尝试了许多不同的方法,但一切都以“未找到”的形式返回

cy.get('role=input')
cy.get('[role=input]')
cy.get('role="input")
cy.get('[role="input"])
cy.get('role=textbox')
cy.get('[role=textbox]')
cy.get('role="textbox")
cy.get('[role="textbox"])
cy.get('form[role="textbox"]')
cy.get('form[role=textbox]')

我尝试过其他的事情,比如大写角色。我从文档中了解到

cy.get('[role="textbox"]')

应该可以工作,但找不到返回。

从 dev-tools 可以看出它确实有这个作用

【问题讨论】:

[role="textbox"] 只有在它具有特定的属性角色时才会存在,不是吗?测试库按角色有选择器:testing-library.com/docs/cypress-testing-library/intro 是的,但是输入框默认有文本框作为角色 这个链接很有趣,我会看看这个 【参考方案1】:

You can use this css selector CSS selector for text input fields?

cy.get9('input[type="text"]')

【讨论】:

是的,这将获得输入,我最终安装了@testing-library/cypress 并使用它的角色,但它也并不总是有效。所以我使用 cy.contains('role', 'text/title') 和 cy.findByRole('role', name: )

以上是关于Cypress 通过 aria 角色获取元素的主要内容,如果未能解决你的问题,请参考以下文章

当已经设置了 aria-selected 时,是不是应该为 Treeitem 角色设置 aria-checked 状态?

获取“推断元组元素名称。请使用语言版本 7.1 或更高版本通过推断名称访问元素。”

使用 cypress 定期检索和比较元素的样式属性

Cypress系列(35)- root() 命令详解

Cypress:不可见数组的长度

Cypress 那点事