Capybara在选择选项

时间:2016-02-01 09:28:53

标签: select drop-down-menu selenium-webdriver capybara

我想从下拉列表中选择一个选项,但它会出现以下错误,即使我可以手动选择它:

  

尝试选择禁用选项:-1

irb#1(main):078:0> select "S", :match => :first, :from => "level2"
Attempt to select disabled option: -1
=> nil
irb#1(main):079:0> select "M", :match => :first, :from => "level2"
=> nil

这个错误是针对每个选项[1]给出的,而选项[0]是下拉标签,对于这种情况,“S”不可选,但“M”是其他选项。

<div id="sizeDiv">
   <select class="form-control tooltip_sizes" id="level2" level="2" name="size" data-msg-required="Beden seçimi yapınız" data-rule-required="true">
      <option value="-1" level="2" selected="selected" disabled="disabled">Beden Seçenekleri</option>
      <option class="s" level="2" value="31884" available="1">S</option>
      <option class="m" level="2" value="31894" available="1">M</option>
      <option class="l" level="2" value="31893" available="1">L</option>
      <option class="xl" level="2" value="31945" available="1">XL</option>
   </select>
</div>

我的问题是为什么我无法选择选项[1]以及如何选择它?

1 个答案:

答案 0 :(得分:1)

因为您正在使用:match =&gt; :首先,默认情况下子字符串匹配是可接受的,您的选择“S”匹配“Seçenekleri”中的子字符串,尝试选择禁用的选择中的第一个选项,从而返回错误。你有几个选择来获得你想要的东西 - 删除:match =&gt; :你的电话中的第一个选项(为什么你想要匹配:首先在这个发现中?)然后将返回到默认值:smart,它首先尝试完全匹配,如果没有则将进行子串匹配。否则你可以添加exact:true选项,它将查找限制为完全匹配