首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cypress中迷失在“in ()”中

在Cypress中迷失在“in ()”中
EN

Stack Overflow用户
提问于 2020-05-26 23:11:00
回答 1查看 219关注 0票数 2

我再一次有一个关于Cypress的问题。我在页面上有许多发布预览块,每个块都包含一个标题和几个发布本身及其用户的状态,我需要用测试检查某些块的状态。我不能使用' eq()‘,因为数据是动态的,而且由于某些原因,测试也不会以相同的顺序运行,因此我经常通过计算eq()得到错误的发布。所以我试着使用“it”,但它失败了。

我的测试:

代码语言:javascript
复制
cy.get('[data-test="list-item"]').within(() => {
      cy.get('[data-test="title-link"]')
        .contains('Empty text')
        .find('[data-test="status"]')
        .contains('Draft');
    });

我知道我的错误出在“contains()”中,因为它试图在那里搜索,但正如我上面提到的,除了标题之外,我没有其他方法来过滤元素。我需要检查标题A的块的状态是“草稿”,标题B的块的状态是“发布”,等等。

我尝试测试的代码(UPD: HTML,因为react包含了太多不必要的信息):

代码语言:javascript
复制
<div class="list-item bg-white cursor-pointer" data-test="list-item">
<div class="content-grid grid grid-rows-1 sm:grid-cols-2">
<div>
<a data-test="title-link" class="leading-lg font-medium text-lg text-black" href="/edit/details/5ecf5deb49ec7431bca16759">Empty text</a>
</div>
<div class="text-right mt-4 sm:mt-0">
<div class="leading-caption font-medium" data-test="status">Draft</div>
<div class="mt-4" data-test="phase">
</div>
</div>
</div>
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-27 08:10:28

如果我没弄错你的React组件结构,我想你可以像这样测试它

代码语言:javascript
复制
/*
 Specify the title-link by it's text, ensuring it's within a list-item 
*/
cy.contains('[data-test="list-item"] [data-test="title-link"]', 'Empty text')

   /*
     Now switch Cypress subject to list-item,
     using '.parents()' instead of '.parent()' 
     in case React has added some layers between title-link and list-item.
   */
   .parents('[data-test="list-item"]')

    /*
      Now restrict search to target list-item
   */
   .within(() => {

      cy.contains('[data-test="status"]', 'Draft');   

});

当内容是异步的时,命令cy.contains(selector, content)还有一个额外的好处,那就是重写。

参考:parents()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62025354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档