Ошибка, показанная в вашем вопросе, не связана ни с одной из других строк кода, которые вы показываете, однако, исходя из сообщения об ошибке, довольно ясно, что происходит.
Попытка выполнить какое-либо действие с элементом, который вы нашли с помощью visible: false
, не имеет смысла, поскольку пользователь не может взаимодействовать с невидимым элементом (99% времени, если вы укажете visible: false
выделаешь что-то не так).В текущем случае вы используете библиотеку chosen
, которая скрывает обычный элемент HTML
<select id="fruits" ... style="display: none;>
...
</select>
<div class="chosen-container" ... >
...
<div class="chosen-drop">
...
<ul class="chosen-results">
<li ...>Apple</li>
<li ...>Orange</li>
...
</ul>
</div>
</div>
Таким образом, чтобы работать с этим, пользователю сначала нужно будет нажать на элемент .chosen-conatiner
(брат скрытого выбора), чтобы открыть элемент .chosen-drop
, а затем нажать на правильный
в элементе
.chosen-results
, который переводитсяв что-то вроде
chosen_container = find('select#fruits + .chosen-container').click
chosen_container.find('.chosen-results li', exact_text: 'Apple').click
Если это не сработает для вас, вам нужно будет добавить точный HTML-код с вашей живой страницы к вашему вопросу.
Примечание: если выИмея дело с большим количеством chosen
виджетов на вашем сайте, вы можете захотеть написать собственные селекторы Capybara - https://www.rubydoc.info/github/teamcapybara/capybara/Capybara#add_selector-class_method - чтобы тесты читались намного лучше