如何检查赛普拉斯中的任何一个元素?

MCFreddie777

我们搜索无效元素,如下所示:

const invalidClasses = '.invalid, .invalid-default';

getInvalidElement() {
    cy.get(invalidClasses)
};

现在,我有了另一个接受该元素并检查其是否具有无效类的函数:

isInvalid(selector) {
 return cy.get(selector).should('have.class','invalid');
}

如何检查元素是否具有两个类中的任何一个?

我知道我能做

cy.get(selector).invoke('attr','class').should('match','/invalid/');

但是,如果类别不同,该怎么办?

(此外,条件测试不适用于这种情况,无论是第一个类还是第二个类,都没有逻辑,我们只想使用更多抽象类来重用)

理查德·马特森

赛普拉斯.should()包装了chai的断言,因此从如何在chai中执行“或”操作

以下html片段

<div id="1" class="class1"></div>
<div id="2" class="class2"></div>
<div id="3" class="class1 class2"></div>
<div id="4" class="class3"></div>

可以这样测试

it('finds either class1 or class2', () => {

  cy.get('div#1')
    .should('satisfy', ($el) => {
      const classList = Array.from($el[0].classList); 
      return classList.includes('class1') || classList.includes('class2') // passes
    }) 

  cy.get('div#2')
    .should('satisfy', ($el) => {
      const classList = Array.from($el[0].classList); 
      return classList.includes('class1') || classList.includes('class2') // passes
    }) // passes

  cy.get('div#3')
    .should('satisfy', ($el) => {
      const classList = Array.from($el[0].classList); 
      return classList.includes('class1') || classList.includes('class2') // passes
    }) 

  cy.get('div#4')
    .should('satisfy', ($el) => {
      const classList = Array.from($el[0].classList); 
      return classList.includes('class1') || classList.includes('class2') // fails
    }) 

})

笔记

  • 该函数的参数是一个jquery对象,因此用于$el[0]引用该元素
  • $el[0].classList返回一个类似数组的DomTokenList ,因此Array.from()可以将Array方法.includes()应用于它。

您还可以通过提取函数使事情更加通用,

it('finds either class1 or class2', () => {

  const hasAtLeastOneClass = (expectedClasses) => {
    return ($el) => {
      const classList = Array.from($el[0].classList); 
      return expectedClasses.some(expectedClass => classList.includes(expectedClass));
    }
  }

  cy.get('div#1').should('satisfy', hasAtLeastOneClass(['class1', 'class2']));  //passes

  cy.get('div#2').should('satisfy', hasAtLeastOneClass(['class1', 'class2']));  //passes

  cy.get('div#3').should('satisfy', hasAtLeastOneClass(['class1', 'class2']));  //passes

  cy.get('div#4').should('satisfy', hasAtLeastOneClass(['class1', 'class2']));  //fails

})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我怎样才能悬停在一个元素然后单击使用赛普拉斯

检查赛普拉斯单选按钮

赛普拉斯(Cypress)-仅声明一个带有文本的元素

在赛普拉斯中,在测试之前在localStorage中设置一个令牌

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

使用赛普拉斯,我该如何编写一个简单的测试来检查页面上是否存在徽标图像

如何使用赛普拉斯比较两个DOM元素?

如何使用赛普拉斯获取元素type =“ email”?

赛普拉斯-如何为每个测试用例编写一个代码

用赛普拉斯检查变换

如何获得赛普拉斯中隐藏元素的HTML?

赛普拉斯:检查元素是否存在,无一例外

如何利用赛普拉斯提取并检查日期更改?

赛普拉斯img元素属性检查

赛普拉斯:如何检查按钮的网址?

如何在赛普拉斯中检查多个CSS类的元素?

如何使用赛普拉斯在特定的HTML <select>字段中选择一个<option>?

在赛普拉斯中,如何测试一个属性等于多个值之一?

赛普拉斯,如何遍历元素?

获取赛普拉斯儿童的元素之一

赛普拉斯-在iframe中获取元素

如何使用赛普拉斯检查sessionStorage的值

赛普拉斯在iframe中查找元素失败

在赛普拉斯中如何计算包含文本的元素?

赛普拉斯-如何等待两个元素中的第二个出现?

赛普拉斯遍历数组中的元素

赛普拉斯:如何将选定的属性从API响应传递到另一个API请求?

在赛普拉斯中使用另一个命令进行更改

赛普拉斯:检查是否有空元素

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    使用AWS Cognito和React的仅限Facebook / Google的登录名(无用户名/密码)

  3. 3

    创建Windows Phone 8应用并将其连接到数据库的最佳方法(最好是SQL Server)

  4. 4

    为什么Java中的System.out.println()打印到控制台?

  5. 5

    卷曲函数无法解析来自bash中变量的代理

  6. 6

    是什么在Android的consumer-rules.pro和proguard-rules.pro之间的区别?

  7. 7

    设置与Apache POI Excel表散点图标记图标的颜色

  8. 8

    将Qt Pyside2与asyncio await语法一起使用?

  9. 9

    崇高的文字+蟒蛇的蟒蛇

  10. 10

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  11. 11

    OpenJDK的和AdoptOpenJDK的区别

  12. 12

    大型数据集缓存到Spark内存中时,“超出了GC开销限制”(通过sparklyr和RStudio)

  13. 13

    “执行测试CMAKE_HAVE_LIBC_PTHREAD”失败实际上是什么意思?

  14. 14

    使用Core 2.2中的Identity,如何在关闭浏览器15分钟后保持会话活动?

  15. 15

    React中的ForwardRefExoticComponent和ForwardRefRenderFunction有什么区别?

  16. 16

    猫鼬查找结果,然后将字段替换为findOne

  17. 17

    如何降级Google Colab的Torch版本

  18. 18

    Keras提前停止回调错误,val_loss指标不可用

  19. 19

    如何避免VSCode中的“导入路径不能以.ts扩展名结尾”错误?

  20. 20

    Nuxt.JS:如何在页面中获取路由URL参数

  21. 21

    是否有为什么会AccessibilityManager.sInstance导致内存泄漏的一个原因?

热门标签

归档