我试图从Capybara的下拉菜单中选择一个项目。我使用不同的CSS框架做得很好;现在我正在使用Materialise。
我和开发人员谈过,他提到Materialise使用两个选择框,因此可能会在那里感到困惑。不确定这是否有帮助,但我想我会提到它。
我正在处理类似于
的CSS <div class="select-wrapper country required">
<span class="caret">▼</span>
<input type="text" class="select-dropdown" readonly="true" data-activates="select-options-0e5c0ffe-1e78-5df0-c08d-7bced194abd1" value="">
<ul id="select-options-0e5c0ffe-1e78-5df0-c08d-7bced194abd1" class="dropdown-content select-dropdown" style="width: 435px; position: absolute; top: 0px; left: 0px; opacity: 1; display: none;"><li class=""> <span></span></li>
<li class=""><span>Afghanistan</span></li>
<li class=""><span>Åland Islands</span></li>
<li class=""><span>Albania</span></li>
<li class=""><span>Algeria</span></li>
<li class=""><span>United States</span></li></ul>
<select class="country required initialized" name="store[address_attributes][country]" id="store_address_attributes_country"><option value=""></option>
<option value="AF">Afghanistan</option>
<option value="AX">Åland Islands</option>
<option value="AL">Albania</option>
<option value="DZ">Algeria</option>
<option value="US">United States</option>
我尝试过的是
select "United States", :from => 'store_address_attributes_country'
我也试过
find("store_address_attributes_country").select("United States")
(我也使用XPath,选择器和名称而不是ID尝试了同样的事情)
这些给我错误
Capybara::ElementNotFound:
Unable to find select box "store_address_attributes_country`
答案 0 :(得分:1)
使用物化时,&lt; select&gt;元素隐藏在页面上并替换为&lt; input&gt;元素作为触发器并且&lt; ul&gt;和&lt; li&gt;元素作为下拉列表。因此,您无法使用#select
。相反,您必须复制用户必须执行的操作,即单击用于触发下拉列表的输入,然后单击正确的li。在这种情况下,这将是
find("input.select-dropdown").click
find("li", text: "United States").click
显然,如果页面上有多个选择,第一个查找必须限定页面上的内容(或增加选择器的特异性)