Ruby 页面对象gem如何与IRB一起使用?
使用WatirWebDriver,您可以在使用IRB(交互式ruby)进行开发时测试代码。 但在使用页面对象gem时,这似乎不起作用。 当我运行ruby程序时,我可以看到我的页面对象调用正在工作。 这在IRB中并不明显。例如,以下是我在IRB中键入的内容:Ruby 页面对象gem如何与IRB一起使用?,ruby,selenium-webdriver,watir-webdriver,page-object-gem,Ruby,Selenium Webdriver,Watir Webdriver,Page Object Gem,使用WatirWebDriver,您可以在使用IRB(交互式ruby)进行开发时测试代码。 但在使用页面对象gem时,这似乎不起作用。 当我运行ruby程序时,我可以看到我的页面对象调用正在工作。 这在IRB中并不明显。例如,以下是我在IRB中键入的内容: require 'page-object' require 'watir-webdriver' b = Watir::Browser.new :chrome 然后,我手动导航到我想要的页面并返回IRB: b.table(:id =>
require 'page-object'
require 'watir-webdriver'
b = Watir::Browser.new :chrome
然后,我手动导航到我想要的页面并返回IRB:
b.table(:id => 'manage-groups-list').present?
IRB返回true。因此,watir webdriver知道页面上存在表控件。我们可以在page对象中执行相同的操作吗?
继续在IRB中编码:
class ManageGroupsPage
include PageObject
table(:groupsList, :id => 'manage-groups-list')
end
然后我尝试从IRB获取表的内容。但是,这将返回一个错误:
irb(main):021:0> puts ManageGroupsPage.groupsList.to_s
NoMethodError: undefined method `groupsList' for ManageGroupsPage:Class
from (irb):21
from C:/Ruby193/bin/irb:12:in `<main>'
irb(main):021:0>将ManageGroupsPage.groupsList.to_
NoMethodError:ManageGroupsPage:Class的未定义方法“groupsList”
来自(irb):21
来自C:/Ruby193/bin/irb:12:in`'
我正在使用page object 1.0.3、watir webdriver 0.6.11和Ruby 1.9.3。查看他们的文档,好像在调用
table :groupsList, id: 'manage-groups-list'
生成实例方法而不是类方法。因此,您需要像这样调用生成的方法:
b = Watir::Browser.new :chrome
page = ManageGroupsPage.new(b) # build a new page object
page.groupsList # call the instance method
看着他们的文件,好像在打电话
table :groupsList, id: 'manage-groups-list'
生成实例方法而不是类方法。因此,您需要像这样调用生成的方法:
b = Watir::Browser.new :chrome
page = ManageGroupsPage.new(b) # build a new page object
page.groupsList # call the instance method
你也可以使用“窥探”宝石。添加到您的env文件中,
要求“pry”
,然后在需要代码停止/检查的地方添加绑定。pry
您也可以使用“pry”gem。添加到您的env文件中,需要“pry”
然后在您希望代码停止/检查的地方添加绑定。pry
这很有效,谢谢。遗憾的是,与直接使用watir webdriver相比,使用PageObject键入的内容要多得多。如果您忘记在类中声明控件,这也是一个麻烦,因为您无法从IRB编辑类;您必须重新启动并重复所有操作。这很有效,谢谢。遗憾的是,与直接使用watir webdriver相比,使用PageObject键入的内容要多得多。如果您忘记在类中声明控件,这也是一个麻烦,因为您无法从IRB编辑类;您必须重新启动并重复所有操作。