如何从具有由新行分隔的值的数组中检索随机值

How to retrieve a random value from an array that has values separate by a new line

我是 JS 的完全新手,目前以测试能力使用它与 Karate 框架一起执行一些 UI 测试。我遇到以下问题:

有一个下拉菜单具有以下 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>

我使用以下空手道方法获取下拉列表下的所有文本值:

def grabValues = scriptAll('#CarId', '_.textContent')

打印后,数组如下所示:

[
  "Mercedes\nBMW\nLexus\nHonda\nToyota\nVW\n"
]

console.log(Math.floor(Math.random() * (grabValues.length-1)))

打印时,它一直给我 0.0。我假设这是因为数组包含新行与逗号分隔?如果是这样,我怎样才能去掉新行并用逗号替换?

一行代码为console.log(myArr[0].split('\n'))

假设:字符串数组存储在myArr

let myArr = ["ABC\nDEF\nGHI\nJKL\nMNO\nPQR\nSTU\nVWX\nYZA\n"]

从数组中获取字符串

let stringOfArr = myArr[0]

存储 stringOfArr 中由 '\n' 删除的新数组 newArray

let newArray = stringOfArr.split('\n')

console.log(newArray)

你想要的是从每个 <option>

中获取文本
def grabValues = scriptAll('#CarId option', '_.textContent')

这将为您提供一组文本值,例如

["Mercedes","BMW","Lexus","Honda","Toyota","VW"]

要获得随机索引,您可以使用

Math.floor(Math.random() * grabValues.length)