0

サイトプリズムジェムを使用しているときに、文字列またはシンボルの補間を使用して要素とロケーターの両方を定義する方法があるかどうかを知っていますか?

私はこのようなことをしようとしています:

0.upto(@adults) do  {
element :"adult#{index}", "#passenger-first-name-#{index}"
element :"adult#{index}", "#passenger-last-name-#{index}"
index+=1
}

しかし、実行時に次の構文エラーが発生します。

構文エラー、予期しないtSYMBEG、keyword_doまたは'{'または'('(SyntaxError)element: "adult#{index}"、 "#passenger-first-name-#{index}"が必要です

私はここでシンボルが補間を許可することを読んでいました:http ://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/

多分私は何かが欠けていますか?どうもありがとう!

4

2 に答える 2

0

それは私の間違いでした。これにつきましては申し訳ございません!補間でシンボルを使用することは許可されています。問題は、uptoループの使用方法にありました。

ごめん!

于 2012-07-03T13:59:35.903 に答える
0

シンボル補間は試していませんが、文字列補間は機能するはずです。しかし、多くの場合、それを行う必要はありません...通常、この種のことは、セクションを使用してWebサイトをより厳密にモデル化することで解決できます。要素を動的に作成する代わりに、要素の配列を作成するelementsorメソッドを使用できます。sectionsこれがあなたが与えた例に基づいて私がすることです:

あなたの例から、あなたのウェブサイトには乗客がリストされていると推測しています...各乗客が別々のdivに表示されている場合は、次のように考えることができます。

#section that models a single passenger
class PassengerDetails < SitePrism::Section
  element :first_name, "input[id^=passenger-first-name]"
  element :last_name, "input[^=passenger-last-name]"
end

#page that contains a list of passengers
class FlightManifest < SitePrism::Page
  sections :passengers, PassengerDetails, ".passenger-details"
  #... where ".passenger-details" is a style on the divs that contains a passenger's details
end

上記のことを考えると、乗客のリストを配列として参照できます。

Then /^the flight manifest contains the correct first and last names for each passenger$/ do
  @flight_manifest.passengers.each_with_index do |passenger, i|
    passenger.first_name.text.should == @expected_passengers[i].first_name
    passenger.last_name.text.should == @expected_passengers[i].last_name
  end
end

それが役立つかどうか、またはあなたのウェブサイトでそれが可能かどうかはわかりませんが、それはあなたを正しい方向に向けるかもしれません...

于 2012-07-03T14:01:27.487 に答える