Cypress как сохранить идентификатор динамического веб-элемента

#cypress

#кипарис

Вопрос:

После полудня,

Мне нужно уметь находить и хранить идентификатор на основе текстового соответствия.

Таким образом, я могу найти какой-то текст и перейти к родительскому div. Но мне нужен способ сохранить идентификатор, но только номер, так как это будет связано с другим действием, поскольку оно динамически создается приложением и радикально откладывается.

Источник.

 lt;div class="link name" role="button" tabindex="0" id="title-6126"gt; lt;pgt;sometextlt;/pgt;  

Ответ №1:

Вы можете сделать что-то вроде этого:

 cy.get('div[role="button"]').invoke('attr', 'id').then((id) =gt; {  cy.log( id.split('-')[1]) //prints 6126 as Number  cy.wrap( id.split('-')[1]).as('idNum') //To use later })  cy.get('@idNum').then((idNum) =gt; {  cy.log(idNum) //prints 6126 as Number  //Access idNum here })  

Теперь, если вы хотите получить свой идентификатор из своего текста, вы можете:

 cy.contains('sometext')  .parent()  .within(() =gt; {  cy.get('div[role="button"]')  .invoke('attr', 'id')  .then((id) =gt; {  cy.log( id.split('-')[1]) //prints 6126 as Number  cy.wrap( id.split('-')[1]).as('idNum') //To use later  })  })  cy.get('@idNum').then((idNum) =gt; {  cy.log(idNum) //prints 6126 as Number  //Access idNum here })