我有使用Ruby,Capybara和Poltergeist的抓取脚本。代码现在正常工作我想为我的代码添加rspec。当代码单击特定按钮并转到其他页面时,如何存根响应?
这是我的示例代码
Capybara::Poltergeist::Driver.new(app, {:js_errors => false, :timeout => 1000 })
Capybara.default_selector = :xpath
session = Capybara::Session.new(:poltergeist)
session.driver.headers = { 'User-Agent' => "Mozilla/5.0 (Macintosh; Intel Mac OS X)" }
session.visit "https://sample.url"
# set ID
id = session.find("//input[@name='identifier']")
id.native.send_key('id')
# set password
password = session.find("//input[@name='password']")
password.native.send_key('pass')
# login
submit = session.find("//input[@value='submit']")
submit.trigger('click')
html = session.html
# Then parse html
基本上我想在rspec中存根html
但不知道该怎么做。
答案 0 :(得分:1)
简短回答 - 你没有
更长的答案 - Capybara专为编写功能测试而设计,这是您的应用程序的端到端测试,在此期间您不应该嘲笑/存储任何应用程序。此外,如果您随后存根响应,那么与页面进行交互的重点是什么,因为交互是没有意义的? (对于您真正关心网站工作的测试中的任何内容,您通常也不应该调用.native
或.trigger
。
听起来好像你想写一个请求规范或查看规范(不要使用Capybara与页面进行交互)。
在旁注中,如果/当您使用带有xpath的Capybara(您当前的选择器实际上会更好地作为CSS)时,您需要了解//
vs .//
陷阱并默认为使用.//
99.99%的时间 - https://github.com/teamcapybara/capybara#beware-the-xpath--trap