gpt4 book ai didi

ruby - 如何从 Support 文件夹中的 class.rb 调用页面对象

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:24 25 4
gpt4 key购买 nike

我正在使用页面对象 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 <== REQUIRED 对于“on”方法。

谢谢大家!

最佳答案

要使用 on(或 on_page)方法需要两件事:

  1. 可用的方法,通过包含 PageObject::PageFactory 模块来完成。
  2. 有一个作为浏览器的 @browser 变量(在类的范围内)。

因此您可以通过执行以下操作使您的 MyTools 类工作:

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 call_to_page_object
on Booking do |page|
puts page.txtFirstName
end
end
end

然后您将像这样调用您的 MyTools 类:

#Assuming your Cucumber steps have the the browser stored in @browser:
MyTools.new(@browser).call_to_page_object

关于ruby - 如何从 Support 文件夹中的 class.rb 调用页面对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13477087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com