2017-10-19 167 views
1

即時嘗試從選擇列表中選擇一個隨機元素,我可以映射所有選項,然後隨機選擇一個,但問題是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

回答

2

而不是隨機選擇一個選項值,您可以選擇一個隨機選項元素。然後你可以使用它的select方法來選擇特定的選項(而不是要求選擇列表中找到選項再次):

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

既然你正在使用陣列和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