32

如果我有一些 HTML,例如:

<div id='drawer'><ul><li><a href='www'>description</a>...

我已经看到我可以通过以下方式获得 Capybara 中 href 的值:

page.find('div#drawer a')['href']

但是,如果它完全被描述为一个 css 字符串,有什么方法可以检索该值?即,尝试获取'div#drawer a[href]' 的值

我试过这样的表达:

page.find('div#drawer a[href]')        => can't convert Capybara::Node::Element into String (TypeError)
page.find('div#drawer a[href]').value  => can't convert nil into String (TypeError)
page.find('div#drawer a[href]').text   => returns the text value of 'description'

我在外部配置文件中有那个 css 表达式,所以有没有可能直接使用它并检索相关属性的值?

谢谢...

4

3 回答 3

72

恐怕为时已晚。但我也遇到了同样的问题并找到了解决方案。它可能会帮助别人。

page.find('div#drawer a')[:href]
于 2013-04-19T04:05:04.977 回答
3

我能够做到这一点的唯一方法是使用 jQuery。

href = page.evaluate_script("$('a.link_class').attr('href');")
于 2012-12-18T20:22:11.433 回答
1

如果您正在寻找具有给定属性的给定值的 HTML 元素,您可以执行以下操作:

expect(page).to have_css('a[href="www"]')
于 2019-09-13T13:24:32.423 回答