Как я могу получить дословный атрибут href

У меня есть внутренняя ссылка на странице HTML:

<div class="bar">
  <a href="#foo">Go to foo</a>
</div>

Я выбрал этот элемент привязки, используя Capybara matcher. Когда я пытаюсь получить доступ к href атрибут, значение расширяется до полного URL:

find(".bar a")[:href] # => "http://path/to/page#foo"

Как получить только внутреннюю ссылку, то есть дословное значение href?

find(".bar a")... # => "#foo"

1 ответ

Решение

Капибара возвращает имущество href (в отличие от атрибута) в JS способны драйверы, что нормализуется. Чтобы получить доступ к значению атрибута, вам нужно будет использовать define_script

link = find(".bar a")
evaluate_script("arguments[0].getAttribute('href')", link)

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

expect(page).to have_link('Go to foo', href: '#foo')

или найти ссылку по атрибуту href

link = find(:link, href: '#foo')

так далее...

Другие вопросы по тегам