Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 页面对象gem如何与IRB一起使用?_Ruby_Selenium Webdriver_Watir Webdriver_Page Object Gem - Fatal编程技术网

Ruby 页面对象gem如何与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 =>

使用WatirWebDriver,您可以在使用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返回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编辑类;您必须重新启动并重复所有操作。