Capybara:是否可以从css字符串中获取属性值?

时间:2012-12-17 00:47:01

标签: capybara

如果我有一些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表达式,所以是否可以直接使用它并检索有问题属性的值?

谢谢...

3 个答案:

答案 0 :(得分:56)

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

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

答案 1 :(得分:2)

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

href = page.evaluate_script("$('a.link_class').attr('href');")

答案 2 :(得分:0)

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

expect(page).to have_css('a[href="www"]')