我正在學習賽普拉斯選擇器策略的最佳實踐。鑒于我想從 Cypress Releases 頁面獲取版本號,并帶有以下 HTML 片段:
<div class="main-content-article-wrapper">
<article >
<h1 >Changelog</h1>
<div >
<h2 id="9-5-4">
<a href="#9-5-4" aria-hidden="true" tabindex="-1"><span >
</span>
</a>9.5.4
</h2>
9.5.4...用于從 frome獲取版本號文本的最佳、面向未來的選擇器是<h2>什么?
我的想法是,Changelog文本<h1>不太可能改變,但<h2>包含文本的不是孩子也不是兄弟姐妹。
所以像這樣的東西?
cy.get("div.nuxt-content")
.first("h2").then((txt=>{
const versionTxt = txt.find("a").text()
expect(versionTxt).to.equal('9.5.4')
但是,這無法找到目標文本
uj5u.com熱心網友回復:
您的測驗失敗,因為文本'9.5.4'在</a>結束標記之外,并且.text()只為您提供了 innerText。
基于 HTML,
cy.get("div.nuxt-content")
.first("h2").then((txt=>{
const versionTxt = txt.text()
expect(versionTxt).to.equal('9.5.4')
或者
cy.get('h2[id="9-5-4"]')
.invoke('text')
.should('eq', '9.5.4')
uj5u.com熱心網友回復:
您可以使用include.text來檢查版本號。
cy.get('h2#9-5-4').should('include.text', '9.5.4')
uj5u.com熱心網友回復:
根據您的用例,使用cy.contains可能是一個可行的選擇。它不會使用選擇器,但在某些情況下可能是更好的解決方案(例如過于復雜的 HTML,只有一個元素和特定文本)。
// Just getting the element
cy.contains('9.5.4');
// Validating element exists -- implied by above, but explicit below
cy.contains('9.5.4').should('exist');
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/463878.html
上一篇:突出顯示活動錨鏈接
