2013-07-18 2 views
0

Я хочу, чтобы выбрать следующий элемент:В Капибаре, как я могу выбрать динамически сгенерированный элемент

<tr class="tr_even" id="13-hey-guys"> 

Я хочу, чтобы выбрать его по идентификатору, который является динамически конкатенация идентификатора объекта и его имени ,

Когда я использую эту линию захватить его:

within('tr id=\"#{item.id}-#{item.name.downcase}\"') do 
    ... 

Я получаю следующее сообщение об ошибке:

Failure/Error: within('tr id=\"#{item.id}-#{item.name.downcase}\"') do 
Nokogiri::CSS::SyntaxError: 
    unexpected '=' after '[#<Nokogiri::CSS::Node:0x0000010835f210 @type=:DESCENDANT_SELECTOR, @value=[#<Nokogiri::CSS::Node:0x0000010835f4e0 @type=:ELEMENT_NAME, @value=["tr"]>, #<Nokogiri::CSS::Node:0x0000010835f2b0 @type=:ELEMENT_NAME, @value=["id"]>]>]' 

Как захватить мой элемент

ответ

1

По умолчанию Capybara использует CSS, чтобы найти элементы.

Я считаю, что правильный путь, чтобы найти этот элемент должен быть:

within("tr##{item.id}-#{item.name.downcase}") do 
    ... 

Я надеюсь, что это помогает.

+0

Это не работает, я получаю Failure/Error: in ('tr ## {item.id} - # {item.name.downcase}') do Nokogiri :: CSS :: SyntaxError: неожиданный '#' после '[# ]' –

+0

@EricBaldwin Пробовал ли вы '' tr ## {item.id} - # {item.name.downcase} "' вместо ''tr ## {item.id} - # {item.name.downcase}''? – etagwerker

+1

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

0

Как насчет следующего?

within("tr[@id=\"#{item.id}-#{item.name.downcase}\"]") 

Я не использовал внутри, но это, как правило, могут быть указаны элементы в find.

Кстати, обратите внимание, что вам нужно использовать двойные кавычки, если вы хотите использовать #{some_variable}.

Смежные вопросы