我正在使用页面对象 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)
很确定我在使用类中的页面对象的过程中遗漏了一些概念,但没有意识到问题所在。你能告诉我这里可能出了什么问题吗?
非常感谢!
==============================
Justin 找到了调用类崩溃的原因。最终类代码结果:
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
为什么它对我不起作用?两个主要原因:
- 我没有将浏览器对象传递给类 <== REQUIRED
- 我没有将 PageObject::PageFactory 包含在“on”方法的类 <== REQUIRED 中。
谢谢大家!