使用xpath从选择列表中获取值

时间:2011-11-11 10:43:21

标签: watir watir-webdriver

我正在尝试使用xpath获取选择列表值,因为id在exists函数中给出了false,但是没有工作

puts   $browser.select_list(:xpath,"//*[@id='numType']").exists?

number = $browser.select_list(:xpath,"//*[@id='numType']").options.map(&:text)

 number_list = Array.new
 number.each do |number_text|
      number_list << "#{number_text}"
 end

HTML code:

<div id="forwardRs">
<div class="forwardR">
<div id="forwardT" class="rc1">
  <select id="forward_types" name="Foward Types" tabindex="5" onchange="changeForwardTypes(this);">
    <option value="unconditional">unconditional</option>
    <option value="busy">busy</option>
    <option value="reply">reply</option>
    <option value="reachable">reachable</option>
    <option value="other">other</option>
  </select>
</div>
<div id="numtype" class="rc1" style="">
  <select id="numType" onchange="changeNumType(this);" name="numbers" tabindex="5">
    <option value="ex">Ex</option>
    <option value="in">In</option>
  </select>
</div>
<div id="rule" class="rc1" style="">
  <input id="tel" type="text" value="" size="20" name="tel" tabindex="2" onchange="changeNumberRule(this);">
</div>
<div id="removeForwardRule" class="rc3">
  <a onclick="removeForwardRule(this);">
   <img src="../../images/delete.png">
  </a>

   

我该怎么做?

2 个答案:

答案 0 :(得分:1)

忽略我最初在这里写的内容,因为我完全没有成功地使.options方法返回选择列表中的任何选项,而.selected_options方法返回所选的选项就好了

通过执行以下操作,我已成功从您的选择列表中获取选项:

select_list_options = $ff.elements_by_xpath("//select[@id='numType']/option")

为您提供选择列表中的选项数组。

要从我做过的那些元素中获取文本

select_list_options_text = Array.new
select_list_options.each do |option|
  select_list_options_text << option.text
end

不是一个非常漂亮的答案,但是嘿。

我完全不知道为什么.options对我不起作用,但你可能遇到同样的问题。

答案 1 :(得分:1)

我使用问题中的html创建了html文件,而我的Firefox 8出于某种原因认为option标记不在select标记内。请参阅随附的屏幕截图。enter image description here