У меня есть следующие два элемента в HTML
<a href="/berlin" >Berlin</a>
<a href="/berlin" >Berlin Germany </a>
Я пытаюсь найти элемент, используя следующий метод Capybara
find("a", :text => "berlin")
Выше будет возвращено два элемента, потому что оба содержат текст berlin.
Есть ли способ сопоставить точный текст в Capybara?
Ответы:
Просто используйте точный вариант Capybara :
источник
Используйте регулярное выражение вместо строки для значения
:text
ключа:Ознакомьтесь с разделом документации "Хеш параметров".
Method: Capybara::Node::Finders#all
.PS: текстовые совпадения чувствительны к регистру. Ваш примерный код действительно вызывает ошибку:
источник
click_link(link_text, :text => link_text)
В зависимости от того, какую версию драгоценного камня вы используете
может быть устаревшим. В этом случае вам придется использовать
источник
Вы тоже можете это сделать:
Что найдете для CSS.
И использование only
exact: true
вместоexact_text
покажет вам сообщение, что этаexact
опция действительна только для XPATH.источник
find("a", exact_text: "berlin")
Я предпочитаю использовать
have_selector
withtext
иexact_text: true
:источник
Для использования click_link в capybara вам нужно добавить еще одно свойство в метод, который его использует.
Здесь имя_ссылки - это текстовое значение ссылки. Используя ключевое слово : text, мы указываем, что хотим щелкнуть ссылку, текстовое значение которой точно соответствует нашему требованию.
источник