2013-03-23 55 views
8

我正在使用rspec来测试一些页面,并且想要使用click方法。但是DOM没有链接或按钮。它只是一个跨度,神奇地它成为一个JavaScript的链接。rspec单击一个范围

<span class="footerLink feedbackLink"> 
    Feedback 
</span> 

rspec的提供 “click_link” 和 “click_button”

任何想法如何,我可以点击一个跨度?

+0

当你说“神奇地变成了一个链接”时,你的意思是你使用Javascript附加了一个onclick处理程序,或者在某些Javascript代码运行后,将该元素类型更改为跨度的锚点? – 2013-03-23 20:29:54

+0

是的,抱歉使用“神奇”。 onclick甚至被连接。坦率地说,我认为只是有一个链接会更容易,但这是目前的设计 – 2013-03-23 21:08:57

+0

可能的重复:[黄瓜和水豚,点击非链接或按钮元素](http://stackoverflow.com/q/3585533/ 841064) – 2013-03-24 20:01:05

回答

11

你应该能够做到

find('.feedbackLink').click 

find返回的元素,元素类有一个#click方法。

既然您可能正在处理Javascript中的点击,请不要忘记在您的测试中添加:js => true作为元标记。

+0

非常感谢您的回答:我添加了指定“发送反馈”,js:true do和find('。feedbackLink')。click。但它打开Firefox。有没有一种方法可以跳过它并像在rspec中的其他任何测试一样运行它? – 2013-03-23 21:06:03

+0

@SarahA不幸的是,如果它依赖于Javascript,它需要在浏览器中运行。好消息是,浏览器不一定是Firefox - [Poltergeist](https://github.com/jonleighton/poltergeist)是几个无头的选项之一。 – 2013-03-23 21:09:08

+1

是的,你可以忽略js规范:'rspec --tags〜js' 和Capybara(RSpec的测试者后端)可以使用https://github.com/thoughtbot/capybara-webkit什么是WebKit的无头版本渲染引擎。 – 2013-03-23 21:46:13