You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Capybara+Selenium Webdriver运行RSpec报undefined method `visit`错如何解决

问题排查与修复方案

错误根因

undefined method 'visit'报错是因为Capybara的DSL方法默认仅会注入到标记为feature类型的RSpec用例中,你当前的测试用例没有声明对应类型,所以无法识别visit等Capybara专属方法。

修复方法(二选一即可)

方案1:给测试用例增加类型标记

修改run.rb文件,在describe块后添加:type => :feature参数,同时注意visit的地址需要补全协议(否则会报错),修改后代码如下:

require_relative 'spec_helper'
describe "test process", :type => :feature do
    it "checks google" do
        # 地址需要补全http/https协议
        visit("https://www.google.com")
        puts "LAUNCHED"
    end
end

方案2:全局注入Capybara DSL

如果不想给每个测试用例单独加类型标记,可以在spec_helper.rb末尾添加全局配置,直接把Capybara的方法注入所有RSpec用例:

# 追加到spec_helper.rb的最后
RSpec.configure do |config|
  config.include Capybara::DSL
end

额外注意事项

  • 如果你需要使用你配置的headless_chrome驱动执行测试,需要在测试用例上增加:js => true标记,示例:
    describe "test process", :type => :feature, :js => true do
    
  • 如果测试的是外部站点(不是本地开发的Rack应用),需要在spec_helper.rb里追加两行配置,避免Capybara启动本地服务:
    Capybara.run_server = false
    Capybara.default_driver = :chrome # 也可以直接指定为:headless_chrome
    

内容的提问来源于stack exchange,提问作者user3636388

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:39:03