ページオブジェクトgemを使用しています。features/bussines/pages/booking_page.rb
次のようなページのページオブジェクトがあるとします。
class Booking
include PageObject
span(:txtFirstName, :id => 'details_first_name')
end
features/support/tools.rb
...そして私は次のような場所にある「ツール」クラスを使用します。
class MyTools
def call_to_page_object
on Booking do |page|
puts page.txtFirstName
end
end
end
...しかし、クラスからオブジェクトを呼び出すことは許可されていないため、このアプローチは失敗します。
undefined method `on' for #<Booking:0x108f5b0c8> (NoMethodError)
クラスからページオブジェクトを使用する途中でいくつかの概念が欠落していることは確かですが、何が問題なのかわかりません。ここで何が悪いのか考えていただけませんか。
どうもありがとうございます!
============================
ジャスティンは、クラスへの呼び出しがクラッシュする理由を見つけました。最終的なクラスコードの結果は次のとおりです。
class MyTools
#Include this module so that the class has the 'on' method
include PageObject::PageFactory
def initialize(browser)
#Assign a browser object to @browser, which the 'on' method assumes to exist
@browser = browser
end
def getCurrentRewards
on Booking do |page|
rewards_text = page.rewards_amount
rewards_amount = rewards_text.match(/(\d+.*\d*)/)[1].to_f
puts "The current rewards amount are: #{rewards_amount}."
return rewards_amount
end
end
end
そして、関数の呼び出し:
user_rewards = UserData.new(@browser).getCurrentRewards
なぜそれがうまくいかなかったのですか?2つの主な理由:
- ブラウザオブジェクトをクラスに渡さなかった<==必須
- 「on」メソッドのクラス<==REQUIREDにPageObject::PageFactoryを含めませんでした。
皆さんありがとう!