【发布时间】:2022-07-31 18:05:29
【问题描述】:
这基本上是针对 ReactSelect 元素(行为类似于启用多选的Select2 element),我试图在该元素上选择一些尚未选择的值。
如果选择了一个选项,那么 DOM 中将有一个如下所示的元素
<div class="select__multi-value__label">option1</div>
因此该选项不会出现在列表中。因此,click()“选项”的任何代码都会失败。
有没有办法检查具有某些特定文本的元素是否在 DOM 中可用?
类似的,
options = ['option1','option2','option3'];
options.forEach(option =>{
cy.get('[test-id="react-select"]').then(reactSelect =>{
if(reactSelect.find('[class="select__multi-value__label"]').contains(option).length == 0){
//code to select that option
cy.get('div.select__menu-list > div[role="option"]').contains(option).click();
}
})
})
这个 find().contains() 部分不起作用。 我怎样才能做到这一点?
感谢您的帮助。
编辑
除了下面给出的解决方案之外,我可以得到一个完全匹配的选择器——比如使用正则表达式吗?
let r = new RegExp("^" + option + "$");
...........
const selector = `div.select__multi-value__label:contains(${r})`;
这在某种程度上是行不通的。找到一个帖子推荐using filter(),但是不知道怎么用。
有可能吗?
【问题讨论】:
标签: cypress