Home > front end >  How to get value of a child based on the text of another child within the same JavaScript parent
How to get value of a child based on the text of another child within the same JavaScript parent

Time:05-27

so I want to be able to get "Text B" from the table below using Cypress but have tried many things and I can only get "Party B".

<div >
  <div >
    <span >Party A</span>
  </div>
  <div >Text A</div>
</div>

<div >
  <div >
    <span >Party B</span>
  </div>
  <div >Text B</div>
</div>

I have been using cy.get(div[]).contains(div[], "Party B").click() to click on the text for "Party B", but don't know how to click on the other child of the same parent.

CodePudding user response:

To get the table containing "Party B", specify the selector inside .contains()

cy.contains('div.table', 'Party B')  // returns the table with "Party B" inside somewhere 
  .find('div.text')                  // find the 2nd child which has class "text"
  .click()

There are variations you could use, if you know "Text B" is the actual text

cy.contains('div.text', 'Text B')
  .click()

If you want to navigate first to div[], then to div[]

cy.contains('Party B')               // returns the <span> owning "Party B" 
  .click()
  .parent('div.label')               // go up to div[]
  .sibling('div.text')               // go to next element at that level
  .click()

Be careful about doing multiple clicks in a chain, usually they have side-effects.

It's better to start a new chain after each click.

  • Related