page-object-gem 如何与 IRB 一起使用?

How can page-object-gem be used with IRB?

使用 watir-webdriver,您可以在使用 IRB(交互式 ruby)开发的同时测试您的代码。 但这在使用页面对象 gem 时似乎不起作用。 当我 运行 ruby 程序时,我可以看到我的页面对象调用正在运行。 这在 IRB 中并不明显。例如。这是我在 IRB 中输入的内容:

require 'page-object'
require 'watir-webdriver'
b = Watir::Browser.new :chrome

然后我手动导航到我想要的页面并返回 IRB:

b.table(:id => 'manage-groups-list').present?

IRB returns 正确。因此,watir-webdriver 知道页面上存在 table 控件。我们可以在页面对象中做同样的事情吗? 继续在 IRB 中编码:

class ManageGroupsPage
include PageObject
table(:groupsList, :id => 'manage-groups-list')
end

然后我尝试从 IRB 获取 table 的内容。然而,这returns一个错误:

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>'

我正在使用页面对象 1.0.3、watir-webdriver 0.6.11 和 Ruby 1.9.3。

看他们的basic usage文档,好像是在调用

table :groupsList, id: 'manage-groups-list'

生成实例方法而不是 class 方法。所以你需要像这样调用生成的方法:

b = Watir::Browser.new :chrome
page = ManageGroupsPage.new(b) # build a new page object
page.groupsList # call the instance method

你也可以使用'pry'gem。添加到您的 env 文件,require 'pry',然后将代码添加到 stop/inspect,然后添加 binding.pry