2017-01-18 5 views
0

Я уже некоторое время борется, но не могу найти решение самостоятельно или хороший совет с помощью Google.Я не могу расширить секцию аккордов с помощью rspec/capybara

Это мой аккордеон код

<div class="panel-group" id="accordion" > 
    <div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h4 class="panel-title"> 
     <a href="collapse1" data-toggle="collapse" data-parent="#accordion" aria-expanded="true" aria-controls="collapse1" id="OT"> 
      Oude Testament 
     </a> 
     </h4> 
    </div> 
and so on for the underlying text and the second panel 

Я попытался открыть его, используя следующий код в RSpec/водосвинки:

x = page.find_by_id('OT') 
click_on(x) 

Или с

x = page.find_link('Oude Testament') 
click_on(x) 

Или с

x = find_link("a[href$='collapse1']") 

Когда я отлаживаю, я вижу, что х назначается, чтобы выглядеть хорошо. Но я никогда не вижу открытия аккордеона (хотя он работает нормально в браузере).

Любые советы?

+0

Какой драйвер вы используете? –

+0

Я предполагаю, что использую селен, я не могу найти что-то настроенное, поэтому он должен быть селеном по умолчанию – andreheijstek

+0

По умолчанию (для тестов, не помеченных как 'js: true'), используется стойка-тест, который не поддерживает JS. Если вы используете селен, он будет открывать экземпляр firefox на вашем рабочем столе при выполнении тестов - если этого не происходит, вы используете тест стойки, и JS ничего не сделает - см. Https://github.com/ teamcapybara/capybara # драйверы –

ответ

0

click_on является псевдонимом для click_link_or_button, который из документации - http://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#click_link_or_button-instance_method - принимает либо Ид, текст или значение ссылки или кнопки, он не принимает элемент. Поэтому, если вы используете JS способного драйвер (не стоечные тесты), вы должны быть в состоянии использовать любого из следующего

page.click_on('OT') 
page.click_on('Oude Testament') 
page.click_link('OT') 
page.click_link('Oude Testament') 
page.find_link('OT').click 
page.find_link('Oude Testament').click 

Вашей третьей попытки (find_link ("а [HREF $ =„collapse1“] ")) передает селектор CSS в find_link, который он не принимает. Из документов - http://www.rubydoc.info/gems/capybara/Capybara/Node/Finders#find_link-instance_method - требуется идентификатор или текст ссылки. Он также поддерживает: HREF вариант, так что соответствует тому, что вы пытались сделать это было бы

page.find_link(href: /collapse1$/).click 

В будущем пожалуйста, напишите фактические ошибки вы получаете от ваших попыток, так как он будет делать это проще для людей, чтобы обеспечить вы отвечаете.

+0

Вау, спасибо за быстрый ответ. – andreheijstek

+0

@andreheijstek Добро пожаловать - если это поможет вам не забудьте принять ответ (галочка), поэтому вопрос будет отмечен как ответ –

+0

Вау, спасибо за быстрый ответ. Но все варианты приводили к: «ActionController :: RoutingError: нет совпадений в маршруте [GET]»/collapse1 »' – andreheijstek