javascript - 如果使用赛普拉斯的 DOM 中不存在该元素,如何处理错误
问题描述
我想使用 for 循环动态获取文本,但在某些时候该元素可能不存在,并且 cypress 试图找到该元素并抛出错误。
与 selenium 一样,我们可以使用 list 来查找元素并可以处理它,但这里 cypress 试图在某个索引处查找动态元素,如果它不存在,则会引发错误。
for(var i=1; i<40; i++){
try{
cy.get('tbody > :nth-child('+i+') > :nth-child(2)')
.then(($elem) =>{
var sum= $elem.text()
cy.log('---',sum)
})
}catch(err) {
cy.log('error')
break
}
我也尝试使用 try catch 块,但它仍然没有进入 catch 块
任何帮助将非常感激
解决方案
假设 childrentbody
是 rowstr
和 cells td
,否则您可以在下面修改我的代码。我会使用each()
循环来执行此操作:
cy.get('tbody > tr').each(($tr, index) => {
if ($tr.find('td').length >= 3) {
let sum = $tr.find('td').eq(2).text();
cy.log('row ' + index + ': ' + sum);
} else {
cy.log('row ' + index + ': Not found')
}
});
推荐阅读
- ruby - logstash 使用 ruby 过滤删除嵌套字段
- react-native - 带有标签栏的底部标签
- xamarin - IOS中xamarin.forms中MR.grid(在listview内)的长按事件调用两次
- java - java.lang.RuntimeException: Canvas: 试图绘制太大(132389600bytes) 位图
- webview - React Native - 如何在 webview 中显示 pdf 文件
- database - 如何在詹金斯中创建动态数据库
- java - 嵌套 JUnit 5 测试的 Spring DataJpaTest 事务行为
- python - 在 python 中编辑一行文本时,如何避免在引号中编辑文本的特定部分?
- azure - Bot 框架负载测试失败并出现 400 错误
- c++ - Effective C++: Item 41 - 关于隐式接口的混淆