Ruby 在site prism中使用插值定义元素和定位器?
您是否知道在使用site prism gem时,是否有一种方法可以使用字符串或符号插值来定义元素和定位器 我正在尝试这样做:Ruby 在site prism中使用插值定义元素和定位器?,ruby,rspec,site-prism,Ruby,Rspec,Site Prism,您是否知道在使用site prism gem时,是否有一种方法可以使用字符串或符号插值来定义元素和定位器 我正在尝试这样做: 0.upto(@adults) do { element :"adult#{index}", "#passenger-first-name-#{index}" element :"adult#{index}", "#passenger-last-name-#{index}" index+=1 } 但我在执行时遇到以下语法错误: 语法错误,意外的tSYMBEG,应为关键
0.upto(@adults) do {
element :"adult#{index}", "#passenger-first-name-#{index}"
element :"adult#{index}", "#passenger-last-name-#{index}"
index+=1
}
但我在执行时遇到以下语法错误:
语法错误,意外的tSYMBEG,应为关键字_do或“{”或“(”(SyntaxError)
元素:“成人#{index}”,“#乘客名字-#{index}”
我在这里读到符号确实允许插值:
也许我遗漏了什么?非常感谢!这是我的错误。很抱歉!在插值中使用符号是不允许的,问题在于我使用upto循环的方式
抱歉!我没有尝试过符号插值,但是字符串插值应该可以工作。但是,你们很多人不需要这样做……通常,这种事情可以通过更紧密地使用节对网站建模来解决。你可以使用
元素
或节
方法来代替动态创建元素将创建元素数组。根据您给出的示例,我将执行以下操作:
我从你的例子中猜到你的网站列出了乘客…如果每个乘客都显示在一个单独的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
我不知道这是否有帮助,或者这对你的网站是否有可能,但它可能会为你指明正确的方向…谢谢Nat,你的回答给了我一个新的思路!太糟糕了,问题已经解决了。这正是我现在面临的情况(符号插值)
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