在我的場景中,我單擊一個下拉選擇,它會產生要單擊的子元素。我想點擊第一個元素/選項,這是我的作業方法。
cy.get( 'ul[role="listbox"]' ).children().each(( $btn, index ) => {
// clicks first option in dropdown
if( index === 0 ) {
cy.get( $btn ).click();
}
});
我這樣做的原因是,當我嘗試直接單擊元素而不遍歷子元素時,有時會收到錯誤“cy.click()` failed 因為該元素已與 DOM 分離。 "
但是我現在實作它的方式,不會發生錯誤。
下拉串列的 HTML(在這種情況下有 2 個選項,可以是任意數量):
<div role="listbox" >
<ul role="listbox" tabindex="0" data-baseweb="menu" id="bui-3" aria-multiselectable="false" >
<li role="option" aria-disabled="false" aria-selected="false" id="bui-5" >
<div aria-selected="false" >Dropdown Option 1 </div>
</li>
<li role="option" aria-disabled="false" aria-selected="false" id="bui-6" >
<div aria-selected="false" >Dropdown Option 2 </div>
</li>
</ul>
</div>
uj5u.com熱心網友回復:
li您是否嘗試過使用 Cypress 的.find()命令找到第一個?我猜這會起作用,希望不會給你描述的錯誤資訊。
cy.get( 'ul[role="listbox"]' )
.find('li') // searches for all `li` underneath the yielded element
.eq(0) // selects the item at the index
.click();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/468298.html
下一篇:在pytest夾具中設定類屬性
