如何让赛普拉斯只处理可见元素?

Posted

技术标签:

【中文标题】如何让赛普拉斯只处理可见元素?【英文标题】:How do I get Cypress just to process the visible element? 【发布时间】:2019-07-01 15:18:47 【问题描述】:

我正在尝试使用这一元素:

cy.get('[data-cy-component=single-picker-search] input').type('Live');

当我运行它时,它告诉我有超过 1 个,所以它不能这样做。

我尝试添加 force: true - 没有任何区别。

我尝试查看每个元素,但如果元素不可见,则会失败:

cy.get(singlePickerSearch).each(($el) => 
  cy.wrap($el).type('Live' + 'enter');
);

如何让它只在元素可见的地方输入?我不希望它在这方面失败。

【问题讨论】:

你知道在这个测试中哪个输入是可见的(例如第一个/第三个/最后一个)? 不,我只能看到搜索文本。 【参考方案1】:

知道了。你可以使用伪选择器:visible 这样你就可以做到了

cy.get('[data-cy-component=single-picker-search] input:visible').type(...)

如果有多个可见,则选择第一个可见输入

cy.get('[data-cy-component=single-picker-search] input:visible').first().type(...)

【讨论】:

【参考方案2】:

这对我试图获取的按钮不起作用:

cy.get('[data-cy-component=single-picker-search] button:visible')

这就是最终对我有用的东西:

cy.get('[data-cy-component=single-picker-search]').filter(':visible')

【讨论】:

那个过滤器应该用引号引起来,不是吗?像这样:.filter(':visible') 这对我也有用,第一个没用(2021 年 11 月更新)

以上是关于如何让赛普拉斯只处理可见元素?的主要内容,如果未能解决你的问题,请参考以下文章

赛普拉斯:检查元素是不是存在无异常

如何使用赛普拉斯检查可能不存在的元素

赛普拉斯 - iframe 处理

如何让赛普拉斯在页面上执行 API 脚本?

赛普拉斯:测试元素是不是不存在

如何在赛普拉斯中选择一个数组?