1

ベース URL を指定したいので、常に絶対 URL を指定する必要はありません。Mechanize が使用するベース URL を指定するにはどうすればよいですか?

4

2 に答える 2

3

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

誰かがこれからいくつかの電子メールを受け取った場合はお詫びします-最初はコメントとして投稿しようとしましたが、スタックオーバーフローのイライラするUIが私を良くしました。

于 2011-06-23T17:46:04.483 に答える
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 を 1 回だけ指定します。

于 2011-06-03T13:11:08.643 に答える