javascript - 你如何让赛普拉斯选择列表中的某个图标?
问题描述
我对赛普拉斯很陌生,并且在图书馆方面一直很幸运。但是发现自己陷入了这种特定情况。
我被困在选择包含特定文本的特定 div 上的按钮上。我需要根据兄弟 div 包含的内容单击一个按钮。
我们的布局看起来像这样:
<div class="MuiList-root">
<div class="MuiListItem-root">
<div class="MuiListItemText-root">
Whatever 1
</div>
<div class="MuiListItemIcon-root">
<button type="button" onClick={()=>{...}}>Delete</button
</div>
</div>
<div class="MuiListItem-root">
<div class="MuiListItemText-root">
Delete This One
</div>
<div class="MuiListItemIcon-root">
<button type="button" onClick={()=>{...}}>Delete</button
</div>
</div>
<div class="MuiListItem-root">
<div class="MuiListItemText-root">
Whatever 2
</div>
<div class="MuiListItemIcon-root">
<button type="button" onClick={()=>{...}}>Delete</button
</div>
</div>
</div>
目标是单击包含“删除这个”的“.MuiListItem-root”上的“删除”按钮。该列表是动态的,因此我无法使用该项目的位置。
**行之有效的 Hacky 解决方案 - 必须有更好的方法**
// Clicks the edit button - There has to be a better way of clicking the elements delete button.
cy.get("[id='stuff'] .MuiTypography-displayBlock").then((elements)=>{
Object.keys(elements).forEach((item,index)=>{
let classificationIndex
if(elements[item].textContent === `Delete This One`) {
classificationIndex = index
cy.get("[type='button']").eq(classificationIndex).click()
}
})
})
我更具体一点,然后找到显示“删除这个”的元素的索引。一旦我知道索引,然后我抓住按钮并单击该特定索引的“删除”。
解决方案
有几种方法可以做到这一点。正如你的描述所说,去.MuiListItemText-root
寻找它的兄弟姐妹,
cy.contains('.MuiListItemText-root', 'Delete This One') // get the div with the text
.siblings() // get sibling elements
.eq(0) // take the first (and only)
.find('button') // find button within
.click()
但.contains()
也可以在后代中找到文本,因此您可以直接定位 MuiListItem 并节省一些步骤
cy.contains('.MuiListItem-root', 'Delete This One') // get grandparent of text
.find('button') // find button within
.click()
推荐阅读
- html - 在 ngFor list Angular 中将一张图片放在另一张图片下方
- android-workmanager - Android Workmanager PeriodicWorkRequest 不是唯一的
- r - 使用正则表达式构建多词短语的字符向量,以使用 R 中的 quanteda 构建 dfm
- angularjs - Angular:仅在异步检索数据时如何运行函数?
- java - “尝试在空对象引用上调用虚拟方法”同时显示来自 sqlite 数据库的数据
- domain-driven-design - DDD、CQRS/ES 和微服务 是否应该根据微服务的视图或聚合做出决策?
- html - 如何显示整页背景图片?
- css - 带卡片组的 Bootstrap 4 水平滚动
- java - 无法在 java 中反转 ArrayList 的排序
- arrays - ReactJs:如何从数组中提取 Json 数据以将其显示在 React Carousel 的 div 上