2016-08-23 2 views
1

Меня попросил коллега помочь с его проблемами, но я тоже застрял на нем.Capybara Cucumber matchers

Он хочет найти элемент, который можно щелкнуть по тексту из его списка.

Список содержит:

list = [ 'cat : B', 
     'cat : B1', 
     'cat : BE' 
     ] 

Когда он перебирает список, первой итерации нажмет на cat : B, как и ожидалось. Следующая итерация также нажимает на cat : B вместо B1.

код используется:

list.each do |cat_item| 
find('li.category', text: cat_item, :match => :prefer_exact).click 

Это выглядит так, как будто Капибара только соответствие, насколько это первый B и думать, что это нашли элемент, вместо согласования с B1 или BE.

Есть ли способ обойти это? Я пробовал несколько способов.

ответ

0

Параметр: prefer_exact match не влияет на параметр: text (также нет exact: true - они влияют только на селекторы, которые используют метод XPath.is - селектора типа: field,: label,: button и т. Д. которые берут строку, которая может соответствовать тексту метки). Чтобы выполнить точное сопоставление с опцией: text, вам необходимо передать Regexp. Тем не менее, он не должен соответствовать только B, когда вы передаете B1, вы распечатали текст найденных элементов, чтобы подтвердить, какие элементы он на самом деле находит, и что это не проблема с вашим обработчиком кликов?