Ruby使用optgroups从选择列表中选择随机元素

时间:2017-10-19 09:10:07

标签: ruby watir optgroup

我目前正在尝试从选择列表中选择一个随机元素,我可以映射所有选项然后随机选择一个,但问题是te选择器内的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)

问题是代码返回所选选项(数组样本)不在选择列表

2 个答案:

答案 0 :(得分:2)

您可以选择随机选项元素,而不是随机选择一个选项值。然后您可以使用它的select方法来选择该特定选项(而不是要求选择列表再次找到该选项):

ciudad = browser.select_list(id: 'destino').options
ciudad.shift
city = ciudad.sample
city.select

答案 1 :(得分:1)

由于您正在使用数组,而optgroups的值为零,您可以执行以下操作

browser
  .select_list(id: 'destino')
  .options
  .select{ |opt| opt.value != '0' }
  .map(&:value)