HTML代码:
<p class="target">
<span>I am Span 1 of target_value 1*</span>
<span>I am Span 2 of target_value 2*</span>
target_value /* I want to get this value in cypress test case */
</p>
注*:两个文本"我是Span 1的target_value 1"one_answers"我是Span 2的target_value 2"是动态的,有时会改变。但是这些span可能包含文本"target_value"。在柏树测试用例中,我如何选择文本"target_value"在
直接(而不是在其子中)并检查它是否正在渲染。我只是想要得到主文本值,它不在它的任何子元素中。您的目标是文本节点。有3个,但前两个只是跨度之间的空格字符。
cy.get('p')
.then($el => $el[0].childNodes)
.then(children => [...children].filter(child => {
return child.nodeType === 3 // ignore <span>s
&& child.textContent.trim() !== '' // remove spacing between <span>s
}))
.then(textNodes => textNodes[0].textContent.trim())
.should('eq', 'target_value /* I want to get this value in cypress test case */')
如果目标文本始终位于<p>
cy.get('p')
.then($p => $p[0].lastChild.nodeValue.trim())
.should('eq', 'target_value /* I want to get this value in cypress test case */')
排除.not(children())
患儿
cy.get('p')
.then($p => $p.contents().not(Cypress.$('p').children()).text().trim())
.should('eq', 'target_value /* I want to get this value in cypress test case */')
克隆并移除子节点
cy.get('p')
.then($p => $p.clone().children().remove().end().text().trim())
.should('eq', 'target_value /* I want to get this value in cypress test case */')
您可以这样做。您提取所有内容并拆分字符串,获得最后一个值并断言或执行任何操作。
cy.get('p.target').invoke('text').then((text) => {
expect(text.split('n')[3].trim()).to.equal('some value')
})