Ruby 使用 optgroups 从 select 列表中选择随机元素
Ruby pick random element from select list with optgroups
我目前正在尝试 select select 列表中的随机元素,我可以映射所有选项,然后随机选择一个,但问题是 te [=22= 中的 optgroup ] 或者,这里是 html 和我的代码的示例。
HML:
<select class="formDY-control" name="destino" id="destino">
<option value="0" style="background-color:#eeeeee">Selecciona Lugar de
Recogida</option>
<optgroup value="0" label="Aeropuertos">
<option value="LUX01">Luxemburg Aeropuerto</option></optgroup>
<optgroup value="0" label="Todos los Destinos">
<option value="LUX01">Luxemburg Aeropuerto</option>
<option value="LUX02">Luxemburg City Ciudad</option>
</optgroup></select>
这是我的代码
ciudad = browser.select_list(id: 'destino').options.map(&:value)
ciudad.shift
city = ciudad.sample
browser.select_list(id: 'destino').select(city)
问题是 selected 选项(数组样本)的代码 returns 不在 select 列表中
由于您使用的是数组,并且 optgroup 的值为零,因此您可以这样做
browser
.select_list(id: 'destino')
.options
.select{ |opt| opt.value != '0' }
.map(&:value)
您可以随机选择一个选项元素,而不是随机选择一个选项值。然后你可以使用它的 select
方法来 select 该特定选项(而不是要求 select 列表再次找到该选项):
ciudad = browser.select_list(id: 'destino').options
ciudad.shift
city = ciudad.sample
city.select
我目前正在尝试 select select 列表中的随机元素,我可以映射所有选项,然后随机选择一个,但问题是 te [=22= 中的 optgroup ] 或者,这里是 html 和我的代码的示例。 HML:
<select class="formDY-control" name="destino" id="destino">
<option value="0" style="background-color:#eeeeee">Selecciona Lugar de
Recogida</option>
<optgroup value="0" label="Aeropuertos">
<option value="LUX01">Luxemburg Aeropuerto</option></optgroup>
<optgroup value="0" label="Todos los Destinos">
<option value="LUX01">Luxemburg Aeropuerto</option>
<option value="LUX02">Luxemburg City Ciudad</option>
</optgroup></select>
这是我的代码
ciudad = browser.select_list(id: 'destino').options.map(&:value)
ciudad.shift
city = ciudad.sample
browser.select_list(id: 'destino').select(city)
问题是 selected 选项(数组样本)的代码 returns 不在 select 列表中
由于您使用的是数组,并且 optgroup 的值为零,因此您可以这样做
browser
.select_list(id: 'destino')
.options
.select{ |opt| opt.value != '0' }
.map(&:value)
您可以随机选择一个选项元素,而不是随机选择一个选项值。然后你可以使用它的 select
方法来 select 该特定选项(而不是要求 select 列表再次找到该选项):
ciudad = browser.select_list(id: 'destino').options
ciudad.shift
city = ciudad.sample
city.select