赛普拉斯-检查视频是否暂停

时间:2020-11-01 17:09:19

标签: javascript unit-testing cypress

我使用赛普拉斯。我的网址中有一个视频,我想检查视频是否处于暂停状态。

我有以下html代码:

<video id="mainVideo" controls="" loop="" autoplay="autoplay" playsinline="playsinline" preload="metadata" data-aos="fade-up">
    <source src="/video.mp4" type="video/mp4">Your navigator doesnt support videos.
</video>

我在测试中使用以下代码进行调试:

cy.get('#mainVideo').debug();

我看到它具有以下属性“ paused”: Property Paused

但是当我尝试使用此代码检查as属性是否为真时,找不到它:

cy.get('#mainVideo').should('have.attr', 'paused', true):

结果超时: Result test

我如何访问该“暂停”视频的“属性”?

更新: 我是这样做的:

cy.get('#mainVideo').should($video => { expect($video.get(0)).to.have.property('paused', true); });

2 个答案:

答案 0 :(得分:1)

访问底层 <video> 元素对我有用:

cy.get('video').then(([videoEl]) => {
  expect(videoEl.paused).to.equal(true);
});

它的简写版本(没有 .then(() => {}):

cy.get('video').its('0.paused').should('equal', true);

因为 cy.get() 返回 jQuery 对象,所以您必须先访问它的 0 属性,然后才能访问任何内置的 DOM 属性。

答案 1 :(得分:0)

您可以使用document.queryselector()-

var val = document.querySelector('#mainVideo').paused

//If you get a string
expect(val).to.equal('true')

//If you get a Boolean value
expect(val).to.be.true