【问题标题】:How can page-object-gem be used with IRB?page-object-gem 如何与 IRB 一起使用?
【发布时间】:2015-06-19 03:12:40
【问题描述】:

使用 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 返回真。因此,watir-webdriver 知道表格控件存在于页面上。我们可以在页面对象中做同样的事情吗? 继续在 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>'

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

【问题讨论】:

    标签: ruby selenium-webdriver watir-webdriver page-object-gem


    【解决方案1】:

    看看他们的basic usage 文档,好像在打电话

    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
    

    【讨论】:

    • 这很好用,谢谢。遗憾的是,使用 PageObject 键入的内容比直接使用 watir-webdriver 多得多。如果你忘记在你的类中声明一个控件也会很麻烦——因为你不能从 IRB 编辑类;您必须重新启动并重复所有操作。
    【解决方案2】:

    您也可以使用“撬”宝石。添加到您的 env 文件中,require 'pry',然后在您希望代码停止/检查的任何位置添加 binding.pry

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多