Capybara找不到下拉列表(Capybara/Rspec)

Capybara找不到下拉列表(Capybara/Rspec),rspec,capybara,Rspec,Capybara,我知道这类问题很多,但我尝试过一些解决方案,但都没有成功 以下是下拉列表的来源: <select style="display: none;" name="Select_Company" id="Select_Company" class="company-list-select"> 我也尝试过(我想这是行不通的,因为“请选择一家公司”文本在技术上是一个选项: select 'ACME', from: "Please Select a Company" 所有这些都会导致“找不到元

我知道这类问题很多,但我尝试过一些解决方案,但都没有成功

以下是下拉列表的来源:

<select style="display: none;" name="Select_Company" id="Select_Company" class="company-list-select">
我也尝试过(我想这是行不通的,因为“请选择一家公司”文本在技术上是一个选项:

select 'ACME', from: "Please Select a Company"
所有这些都会导致“找不到元素”错误。有什么想法吗?我真的不确定该尝试什么

这是在使用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">
请选择一家公司
  • 请选择一家公司
查看您的select,它有“style=display:none”,这表示它在页面上不可见。我假设它在页面上已被JS驱动的小部件替换,您的最后一行似乎显示了它。因此,您不能只使用select(它只适用于真正可见的元素)我不确定你正在使用的widget是什么,但通常是点击widget,这会使ul可见,然后点击你想要的可见li,比如

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

看看你的选择,它有“style=display:none”,这表明它在页面上不可见。我假设它在页面上被一个JS驱动的小部件所取代,你的最后一行似乎显示了这个小部件。因此,你不能只使用选择(它只适用于真正可见的元素)我不确定你正在使用的widget是什么,但通常是点击widget,这会使ul可见,然后点击你想要的可见li,比如

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

不幸的是,我得到的是“找不到css”。选择的drop“”是“.”选择器始终是“page.find”中的类…选择单曲确实有效。我想是反复试验吧haha@msmith1114.是的,根据你展示的HTML和类名,“选择放置”是一个猜测,这完全取决于你的页面上实际可见的内容以及小部件的工作方式。不幸的是,我得到的是“找不到css”。选择放置“”是“。”选择器始终是“page.find”中的类…选择单曲确实有效。我想是反复试验吧haha@msmith1114.是的,“选择放置”是基于你展示的HTML和类名的猜测,这完全取决于你的页面上实际可见的内容以及小部件的工作方式
page.find('.chosen-drop').click
page.find('li', text: 'the text of the item to select').click