hungryhippos
hungryhippos

Reputation: 637

How to use scriptAll to grab all values when the intended value is not text type

I have a page with multiple textboxes and dropdowns with values that I am trying to validate. The values in them will be dynamic in each run.

The HTML looks something like:

<input readonly="readonly" class="form-control valid" data-val="true" data="ABC"  aria-invalid="false" xpath="1">

What I want to do is grab the value of "data" for each textbox. I have used scriptAll before in such a case when I was grabbing text by using innerText. However, that won't work with a regular value such as in the HTML above.

I did try one solution that worked:

driver.value(//input[@data])

However, that just grabs the first textbox value, is there a way I can combine scriptAll with driver.value? OR would I be better off doing some JS here?

Thank you in advance!

Upvotes: 1

Views: 375

Answers (1)

Peter Thomas
Peter Thomas

Reputation: 58088

Yes, refer the docs for scriptAll(): https://github.com/karatelabs/karate/tree/master/karate-core#scriptall

Use whatever JS works to get an attribute value. Haven't tried, but this should work, you get the idea:

* def list = scriptAll('input', "_.getAttribute('data')")

Upvotes: 1

Related Questions