Soy un completo novato en JS y actualmente lo uso en capacidad de prueba junto con el marco de Karate para realizar algunas pruebas de interfaz de usuario. Tengo el siguiente problema:
Hay un menú desplegable que tiene el siguiente HTML:
<select class=id="CarId" name="CarId" aria-describedby="CarId-error" aria-invalid="false" xpath="1"> <option value="1">Mercedes</option> <option value="2">BMW</option> <option value="3">Lexus</option> <option value="4">Honda</option> <option value="5">Toyota</option> <option value="6">VW</option> </select>Usé el siguiente método de Karate para obtener todos los valores de texto en el menú desplegable:
def grabValues = scriptAll('#CarId', '_.textContent')Una vez impresa, la matriz se ve así:
[ "Mercedes\nBMW\nLexus\nHonda\nToyota\nVW\n" ] console.log(Math.floor(Math.random() * (grabValues.length-1)))Cuando se imprime, me sigue dando 0.0. ¿Supongo que esto se debe a que la matriz contiene nuevas líneas frente a las delimitadas por comas? Si es así, ¿cómo puedo deshacerme de las nuevas líneas y reemplazarlas con comas?
Lo que quieres es obtener el texto de cada <option>
def grabValues = scriptAll('#CarId option', '_.textContent')Esto le dará una serie de valores de texto como
["Mercedes","BMW","Lexus","Honda","Toyota","VW"]Para obtener un índice aleatorio, usaría
Math.floor(Math.random() * grabValues.length)El código de una línea es console.log(myArr[0].split('\n'))
O
Supongamos: la matriz de String se almacena en myArr
let myArr = ["ABC\nDEF\nGHI\nJKL\nMNO\nPQR\nSTU\nVWX\nYZA\n"]Para obtener la cadena de la matriz
let stringOfArr = myArr[0] Almacenar la nueva matriz de stringOfArr delimitada por '\n' en newArray
let newArray = stringOfArr.split('\n') console.log(newArray)