i am trying to get all values
under select tag
in order to have an array.
This is my code:
cy.get('[data-tab-name-prefix="selectedFonds[0]]')
.scrollIntoView()
.should('be.visible')
.find('[name="selectedFonds[0][name]"]')
.find('option')
.invoke('attr', 'value').then($options => {
cy.log($options)
})
<div data-tab-name-prefix="selectedFonds[0]">
<div class= something>
<div class= something else>
<select class=form-control name="selectedFonds[0][name]">
<option value="first value"> First Value </option>
<option value="second value"> Second Value </option>
<option value="third value"> Third Value </option>
<option value="forth value"> Forth Value </option>
</select>
</div>
</div>
</div>
The problem is that it returns only the first option... not all of them.
CodePudding user response:
My suggestion would be to target the element with the data attribute then do within()
. Then target the select element and do children()
. Followed by a each()
block to iterate over every option element.
const values = ['first value', 'second value', 'third value', 'fourth value']
cy.get('[data-tab-name-prefix="selectedFonds[0]]')
.scrollIntoView()
.should('be.visible')
.within( ($el) => {
cy.get('select')//based on your HTML you have only one select inside this div
.should('be.visible')
.children()
.each( ($el, index) => {
cy.get($el)
.should('have.value', values[index])
})
})