Ruby从选择列表中选择随机元素与optgroup

问题描述:

即时尝试从选择列表中选择一个随机元素,我可以映射所有选项,然后随机选择一个,但问题是te选择器内的optgroup,这里是一个html和我的代码的示例。 HML:Ruby从选择列表中选择随机元素与optgroup

<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) 

的问题是,代码返回所选择的选项(阵列样品)不在选择列表

+0

什么是'ciudad'的代码的第一行后的值? – hoffm

+0

是一个数组,其中包含两个optgroups的下拉列表 – Boikot

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

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

既然你正在使用阵列和optgroups的值为零,你可以做这样的事情

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

这是挑选随机elmente的好方法,但问题出在我需要在下拉列表中选择此值时,因为我不知道如何告诉ruby optgroup是这个值 – Boikot

+0

你不能只用这个吗? http://www.rubydoc.info/github/watir/watir-classic/Watir/SelectList#select_value-instance_method – Maru