Есть много способов выбрать этот элемент, который будет зависеть от того, что именно является структурой документа ...
перед двумя элементами div (есть ли другие элементы div и т. Д.). Один из методов, который не будет зависеть от этой структуры, показан в ответе @fabersky, который должен использовать all
и индексировать результаты (all('.card')[1]
) - и если страница очень динамична, вы можете указать минимум на что вроде (all('.card', minimum: 2)[1]
). Другой вариант - написать XPath, соответствующий только правильному элементу (как правило, предпочтительнее выбирать селекторы, которые возвращают один элемент, используя all
и индексируя результаты, когда это возможно).
within(:css, '#attachments') do
within(:xpath, XPath.css('.card')[2]) do
expect(page).to have_text('ipsum')
end
end
В этом случае [2]
является частью выражения XPath (которое становится .//*[contains(concat(' ', normalize-space(@class), ' '), ' card ')][2]
), поэтому индексирование начинается с 1