【问题标题】:How to set a "base URL" for Webrat, Mechanize如何为 Webrat、Mechanize 设置“基本 URL”
【发布时间】:2011-07-19 22:57:04
【问题描述】:

我想指定一个基本 URL,这样我就不必总是指定绝对 URL。如何指定 Mechanize 使用的基本 URL?

【问题讨论】:

    标签: ruby cucumber mechanize webrat mechanize-ruby


    【解决方案1】:

    对于 Mechanize,您指定的第一个 URL 将被视为基本 URL。例如:

    require "rubygems"
    require "mechanize"
    
    agent = Mechanize.new
    agent.get("http://some-site.org")
    
    # Subsequent requests can now use the relative path:
    
    agent.get("/contact.html")
    

    这样您只需指定一次基本 URL。

    【讨论】:

      【解决方案2】:

      要使用 Webrat 完成之前提供的答案,您可以执行以下操作,例如在你的 Cucumber env.rb 中:

      require 'webrat'
      
      Webrat.configure do |config|
        config.mode = :mechanize
      end
      
      World do
        session = Webrat::Session.new
        session.extend(Webrat::Methods)
        session.extend(Webrat::Matchers)
        session.visit 'http://yoursite/yourbasepath/'
        session
      end
      

      为了让它更健壮,比如在不同的环境中使用,你可以这样做:

      ENV['CUCUMBER_HOST'] ||= 'yoursite'
      ENV['CUCUMBER_BASE_PATH'] ||= '/yourbasepath/'
      
      # Webrat
      require 'webrat'
      
      Webrat.configure do |config|
        config.mode = :mechanize
      end
      
      World do
        session = Webrat::Session.new
        session.extend(Webrat::Methods)
        session.extend(Webrat::Matchers)
        session.visit('http://' + ENV['CUCUMBER_HOST'] + ENV['CUCUMBER_BASE_PATH'])
        session
      end
      

      请注意,如果您使用 Mechanize,Webrat 也将无法跟踪您的重定向,因为它无法正确解释当前主机。要解决此问题,您可以在上面添加session.header('Host', ENV['CUCUMBER_HOST'])

      为了确保在任何地方都使用正确的路径进行访问和匹配,如果您使用它,请将ENV['CUCUMBER_BASE_PATH'] + 添加到paths.rb 中paths_to 方法的开头。它应该是这样的:

        def path_to(page_name)
          ENV['CUCUMBER_BASE_PATH'] + 
      
          case page_name
      

      如果有人从中收到了几封电子邮件,我深表歉意——我最初试图发表评论,但 Stack Overflow 令人恼火的 UI 战胜了我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-19
        • 2018-01-26
        • 2019-12-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多