безголовый chrome + rspec не может выбрать опцию из формы выбрать список он выдает ошибку элемент капибара не найден - PullRequest
0 голосов
/ 18 мая 2018

Я использую безголовый хром , rspec - 3.6.0 , капибара - 2.15.1

select('apple',from: 'fruits', visible: false)
page.find('#apple', visible: false).click
within 'results' do
  page.find('.option', text: 'apple').click
end

Ошибка:

 Capybara::ElementNotFound: Unable to find visible css "#fruits .chosen-drop .chosen-results"

1 Ответ

0 голосов
/ 18 мая 2018

Ошибка, показанная в вашем вопросе, не связана ни с одной из других строк кода, которые вы показываете, однако, исходя из сообщения об ошибке, довольно ясно, что происходит.

Попытка выполнить какое-либо действие с элементом, который вы нашли с помощью 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 - чтобы тесты читались намного лучше

...