Capybara无法找到下拉列表(Capybara / Rspec)

时间:2016-05-02 19:35:16

标签: rspec capybara

我知道有很多这类问题,但我尝试了一些没有运气的解决方案。

以下是下拉列表的来源:

<select style="display: none;" name="Select_Company" id="Select_Company" class="company-list-select">

然后下面只是一堆正常的选项值:IE:

<option value="2">Generic Company</option>

(当然这是重复的)。

所以这就是我尝试过的:

select('GenericCompany', :from => 'Select_Company')
select('Select_Company')select('Generic Company', :from => 'Select_Company')

我也试过(我想这不起作用,因为“请选择一家公司”文本在技术上是一个选项:

select 'ACME', from: "Please Select a Company"

所有这些都导致无法找到Element错误。有任何想法吗?我不确定该尝试什么。

这是使用Capybara和Rspec,其余代码很好,因为它可以在这里工作(我们从下拉列表中选择)。我能想到的唯一奇怪的事情(我没有写这个网站)是在选择了下拉类之后:

<div id="Select_Company_chosen" title="" style="width: 100%;" class="chosen-container chosen-container-single"><a class="chosen-single" tabindex="-1"><span>Please Select a Company</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input autocomplete="off" type="text"></div><ul class="chosen-results"><li data-option-array-index="0" style="" class="active-result result-selected">Please Select a Company</li><li data-option-array-index="1" style="" class="active-result">

1 个答案:

答案 0 :(得分:2)

查看你的选择它有“style = display:none”,这表示它在页面上不可见。我假设它已经被一个JS驱动的小部件替换在页面上,你的最后一行似乎显示出来了。因此,您不能只使用select(它只适用于真实的可见&lt; select&gt;元素),并且需要复制用户将要执行的操作。我不确定你正在使用的小部件是什么,但通常点击小部件,这使得ul可见,然后点击你想要的可见li - 类似

page.find('.chosen-drop').click
page.find('li', text: 'the text of the item to select').click